-- extracted from draft-ietf-idmr-dvmrp-mib-10.txt -- at Mon Nov 15 17:11:15 1999 DVMRP-STD-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, mib-2, Integer32, Counter32, Gauge32, NOTIFICATION-TYPE, IpAddress, TimeTicks, BITS FROM SNMPv2-SMI DisplayString, RowStatus FROM SNMPv2-TC MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP FROM SNMPv2-CONF SnmpAdminString FROM SNMP-FRAMEWORK-MIB InterfaceIndexOrZero, InterfaceIndex FROM IF-MIB; dvmrpStdMIB MODULE-IDENTITY LAST-UPDATED "9908301200Z" -- August 30, 1999 ORGANIZATION "IETF IDMR Working Group." CONTACT-INFO " Dave Thaler Microsoft One Microsoft Way Redmond, WA 98052-6399 EMail: dthaler@microsoft.com" DESCRIPTION "The MIB module for management of DVMRP routers." REVISION "9908301200Z" -- August 30, 1999 DESCRIPTION "Initial version, published as RFC xxxx (to be filled in by RFC-Editor)." ::= { mib-2 xx } -- NOTE TO RFC EDITOR: When this document is published as an -- RFC, replace xx with IANA assignment, and delete this comment. dvmrpMIBObjects OBJECT IDENTIFIER ::= { dvmrpStdMIB 1 } dvmrp OBJECT IDENTIFIER ::= { dvmrpMIBObjects 1 } dvmrpScalar OBJECT IDENTIFIER ::= { dvmrp 1 } dvmrpVersionString OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The router's DVMRP version information. Similar to sysDescr in MIB-II, this is a free-form field which can be used to display vendor-specific information." ::= { dvmrpScalar 1 } dvmrpGenerationId OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The generation identifier for the routing process. This is used by neighboring routers to detect whether the DVMRP routing table should be resent." ::= { dvmrpScalar 2 } dvmrpNumRoutes OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of entries in the routing table. This can be used to monitor the routing table size to detect illegal advertisements of unicast routes." ::= { dvmrpScalar 3 } dvmrpReachableRoutes OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of entries in the routing table with non infinite metrics. This can be used to detect network partitions by observing the ratio of reachable routes to total routes." ::= { dvmrpScalar 4 } -- The DVMRP Interface Table dvmrpInterfaceTable OBJECT-TYPE SYNTAX SEQUENCE OF DvmrpInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The (conceptual) table listing the router's multicast- capable interfaces." ::= { dvmrp 2 } dvmrpInterfaceEntry OBJECT-TYPE SYNTAX DvmrpInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry (conceptual row) in the dvmrpInterfaceTable. This row augments ipMRouteInterfaceEntry in the IP Multicast MIB, where the threshold object resides." INDEX { dvmrpInterfaceIfIndex } ::= { dvmrpInterfaceTable 1 } DvmrpInterfaceEntry ::= SEQUENCE { dvmrpInterfaceIfIndex InterfaceIndex, dvmrpInterfaceLocalAddress IpAddress, dvmrpInterfaceMetric Integer32, dvmrpInterfaceStatus RowStatus, dvmrpInterfaceRcvBadPkts Counter32, dvmrpInterfaceRcvBadRoutes Counter32, dvmrpInterfaceSentRoutes Counter32, dvmrpInterfaceInterfaceKey SnmpAdminString, dvmrpInterfaceInterfaceKeyVersion Integer32 } dvmrpInterfaceIfIndex OBJECT-TYPE SYNTAX InterfaceIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "The ifIndex value of the interface for which DVMRP is enabled." ::= { dvmrpInterfaceEntry 1 } dvmrpInterfaceLocalAddress OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-create STATUS current DESCRIPTION "The IP address this system will use as a source address on this interface. On unnumbered interfaces, it must be the same value as dvmrpInterfaceLocalAddress for some interface on the system." ::= { dvmrpInterfaceEntry 2 } dvmrpInterfaceMetric OBJECT-TYPE SYNTAX Integer32 (1..31) MAX-ACCESS read-create STATUS current DESCRIPTION "The distance metric for this interface which is used to calculate distance vectors." DEFVAL { 1 } ::= { dvmrpInterfaceEntry 3 } dvmrpInterfaceStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "The status of this entry. Creating the entry enables DVMRP on the virtual interface; destroying the entry or setting it to notInService disables DVMRP on the virtual interface." ::= { dvmrpInterfaceEntry 4 } dvmrpInterfaceRcvBadPkts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of DVMRP messages received on the interface by the DVMRP process which were subsequently discarded as invalid (e.g. invalid packet format, or a route report from an unknown neighbor)." ::= { dvmrpInterfaceEntry 5 } dvmrpInterfaceRcvBadRoutes OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of routes, in valid DVMRP packets, which were ignored because the entry was invalid." ::= { dvmrpInterfaceEntry 6 } dvmrpInterfaceSentRoutes OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of routes, in DVMRP Report packets, which have been sent on this interface. Together with dvmrpNeighborRcvRoutes at a peer, this object is useful for detecting routes being lost." ::= { dvmrpInterfaceEntry 7 } dvmrpInterfaceInterfaceKey OBJECT-TYPE SYNTAX SnmpAdminString MAX-ACCESS read-create STATUS current DESCRIPTION "The (shared) key for authenticating neighbors on this interface. This object is intended solely for the purpose of setting the interface key, and MUST be accessible only via requests using both authentication and privacy. The agent MAY report an empty string in response to get, get- next, get-bulk requests." ::= { dvmrpInterfaceEntry 8 } dvmrpInterfaceInterfaceKeyVersion OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-create STATUS current DESCRIPTION "The highest version number of all known interface keys for this interface used for authenticating neighbors." ::= { dvmrpInterfaceEntry 9 } -- The DVMRP Neighbor Table dvmrpNeighborTable OBJECT-TYPE SYNTAX SEQUENCE OF DvmrpNeighborEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The (conceptual) table listing the router's DVMRP neighbors, as discovered by receiving DVMRP messages." ::= { dvmrp 3 } dvmrpNeighborEntry OBJECT-TYPE SYNTAX DvmrpNeighborEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry (conceptual row) in the dvmrpNeighborTable." INDEX { dvmrpNeighborIfIndex, dvmrpNeighborAddress } ::= { dvmrpNeighborTable 1 } DvmrpNeighborEntry ::= SEQUENCE { dvmrpNeighborIfIndex InterfaceIndex, dvmrpNeighborAddress IpAddress, dvmrpNeighborUpTime TimeTicks, dvmrpNeighborExpiryTime TimeTicks, dvmrpNeighborGenerationId Integer32, dvmrpNeighborMajorVersion Integer32, dvmrpNeighborMinorVersion Integer32, dvmrpNeighborCapabilities BITS, dvmrpNeighborRcvRoutes Counter32, dvmrpNeighborRcvBadPkts Counter32, dvmrpNeighborRcvBadRoutes Counter32, dvmrpNeighborState INTEGER } dvmrpNeighborIfIndex OBJECT-TYPE SYNTAX InterfaceIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "The value of ifIndex for the virtual interface used to reach this DVMRP neighbor." ::= { dvmrpNeighborEntry 1 } dvmrpNeighborAddress OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The IP address of the DVMRP neighbor for which this entry contains information." ::= { dvmrpNeighborEntry 2 } dvmrpNeighborUpTime OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The time since this DVMRP neighbor (last) became a neighbor of the local router." ::= { dvmrpNeighborEntry 3 } dvmrpNeighborExpiryTime OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The minimum time remaining before this DVMRP neighbor will be aged out." ::= { dvmrpNeighborEntry 4 } dvmrpNeighborGenerationId OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The neighboring router's generation identifier." ::= { dvmrpNeighborEntry 5 } dvmrpNeighborMajorVersion OBJECT-TYPE SYNTAX Integer32 (0..255) MAX-ACCESS read-only STATUS current DESCRIPTION "The neighboring router's major DVMRP version number." ::= { dvmrpNeighborEntry 6 } dvmrpNeighborMinorVersion OBJECT-TYPE SYNTAX Integer32 (0..255) MAX-ACCESS read-only STATUS current DESCRIPTION "The neighboring router's minor DVMRP version number." ::= { dvmrpNeighborEntry 7 } dvmrpNeighborCapabilities OBJECT-TYPE SYNTAX BITS { leaf(0), prune(1), generationID(2), mtrace(3) } MAX-ACCESS read-only STATUS current DESCRIPTION "This object describes the neighboring router's capabilities. The leaf bit indicates that the neighbor has only one interface with neighbors. The prune bit indicates that the neighbor supports pruning. The generationID bit indicates that the neighbor sends its generationID in Probe messages. The mtrace bit indicates that the neighbor can handle mtrace requests." ::= { dvmrpNeighborEntry 8 } dvmrpNeighborRcvRoutes OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of routes received in valid DVMRP packets received from this neighbor. This can be used to diagnose problems such as unicast route injection, as well as giving an indication of the level of DVMRP route exchange activity." ::= { dvmrpNeighborEntry 9 } dvmrpNeighborRcvBadPkts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packet received from this neighbor which were discarded as invalid." ::= { dvmrpNeighborEntry 10 } dvmrpNeighborRcvBadRoutes OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of routes, in valid DVMRP packets received from this neighbor, which were ignored because the entry was invalid." ::= { dvmrpNeighborEntry 11 } dvmrpNeighborState OBJECT-TYPE SYNTAX INTEGER { oneway(1), active(2), ignoring(3), down(4) } MAX-ACCESS read-only STATUS current DESCRIPTION "State of the neighbor adjacency." ::= { dvmrpNeighborEntry 12 } -- The DVMRP Route Table dvmrpRouteTable OBJECT-TYPE SYNTAX SEQUENCE OF DvmrpRouteEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The table of routes learned through DVMRP route exchange." ::= { dvmrp 4 } dvmrpRouteEntry OBJECT-TYPE SYNTAX DvmrpRouteEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry (conceptual row) containing the multicast routing information used by DVMRP in place of the unicast routing information." INDEX { dvmrpRouteSource, dvmrpRouteSourceMask } ::= { dvmrpRouteTable 1 } DvmrpRouteEntry ::= SEQUENCE { dvmrpRouteSource IpAddress, dvmrpRouteSourceMask IpAddress, dvmrpRouteUpstreamNeighbor IpAddress, dvmrpRouteIfIndex InterfaceIndexOrZero, dvmrpRouteMetric Integer32, dvmrpRouteExpiryTime TimeTicks, dvmrpRouteUpTime TimeTicks } dvmrpRouteSource OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The network address which when combined with the corresponding value of dvmrpRouteSourceMask identifies the sources for which this entry contains multicast routing information." ::= { dvmrpRouteEntry 1 } dvmrpRouteSourceMask OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The network mask which when combined with the corresponding value of dvmrpRouteSource identifies the sources for which this entry contains multicast routing information." ::= { dvmrpRouteEntry 2 } dvmrpRouteUpstreamNeighbor OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The address of the upstream neighbor (e.g., RPF neighbor) from which IP datagrams from these sources are received." ::= { dvmrpRouteEntry 3 } dvmrpRouteIfIndex OBJECT-TYPE SYNTAX InterfaceIndexOrZero MAX-ACCESS read-only STATUS current DESCRIPTION "The value of ifIndex for the interface on which IP datagrams sent by these sources are received. A value of 0 typically means the route is an aggregate for which no next-hop interface exists." ::= { dvmrpRouteEntry 4 } dvmrpRouteMetric OBJECT-TYPE SYNTAX Integer32 (1..32) MAX-ACCESS read-only STATUS current DESCRIPTION "The distance in hops to the source subnet." ::= { dvmrpRouteEntry 5 } dvmrpRouteExpiryTime OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The minimum amount of time remaining before this entry will be aged out." ::= { dvmrpRouteEntry 6 } dvmrpRouteUpTime OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The time since the route represented by this entry was learned by the router." ::= { dvmrpRouteEntry 7 } -- The DVMRP Routing Next Hop Table dvmrpRouteNextHopTable OBJECT-TYPE SYNTAX SEQUENCE OF DvmrpRouteNextHopEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The (conceptual) table containing information on the next hops on outgoing interfaces for routing IP multicast datagrams." ::= { dvmrp 5 } dvmrpRouteNextHopEntry OBJECT-TYPE SYNTAX DvmrpRouteNextHopEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry (conceptual row) in the list of next hops on outgoing interfaces to which IP multicast datagrams from particular sources are routed." INDEX { dvmrpRouteNextHopSource, dvmrpRouteNextHopSourceMask, dvmrpRouteNextHopIfIndex } ::= { dvmrpRouteNextHopTable 1 } DvmrpRouteNextHopEntry ::= SEQUENCE { dvmrpRouteNextHopSource IpAddress, dvmrpRouteNextHopSourceMask IpAddress, dvmrpRouteNextHopIfIndex InterfaceIndex, dvmrpRouteNextHopType INTEGER } dvmrpRouteNextHopSource OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The network address which when combined with the corresponding value of dvmrpRouteNextHopSourceMask identifies the sources for which this entry specifies a next hop on an outgoing interface." ::= { dvmrpRouteNextHopEntry 1 } dvmrpRouteNextHopSourceMask OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The network mask which when combined with the corresponding value of dvmrpRouteNextHopSource identifies the sources for which this entry specifies a next hop on an outgoing interface." ::= { dvmrpRouteNextHopEntry 2 } dvmrpRouteNextHopIfIndex OBJECT-TYPE SYNTAX InterfaceIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "The ifIndex value of the interface for the outgoing interface for this next hop." ::= { dvmrpRouteNextHopEntry 3 } dvmrpRouteNextHopType OBJECT-TYPE SYNTAX INTEGER { leaf(1), branch(2) } MAX-ACCESS read-only STATUS current DESCRIPTION "Type is leaf if no downstream dependent neighbors exist on the outgoing virtual interface. Otherwise, type is branch." ::= { dvmrpRouteNextHopEntry 4 } -- The DVMRP Prune Table dvmrpPruneTable OBJECT-TYPE SYNTAX SEQUENCE OF DvmrpPruneEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The (conceptual) table listing the router's upstream prune state." ::= { dvmrp 6 } dvmrpPruneEntry OBJECT-TYPE SYNTAX DvmrpPruneEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry (conceptual row) in the dvmrpPruneTable." INDEX { dvmrpPruneGroup, dvmrpPruneSource, dvmrpPruneSourceMask } ::= { dvmrpPruneTable 1 } DvmrpPruneEntry ::= SEQUENCE { dvmrpPruneGroup IpAddress, dvmrpPruneSource IpAddress, dvmrpPruneSourceMask IpAddress, dvmrpPruneExpiryTime TimeTicks } dvmrpPruneGroup OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The group address which has been pruned." ::= { dvmrpPruneEntry 1 } dvmrpPruneSource OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The address of the source or source network which has been pruned." ::= { dvmrpPruneEntry 2 } dvmrpPruneSourceMask OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The address of the source or source network which has been pruned. The mask must either be all 1's, or else dvmrpPruneSource and dvmrpPruneSourceMask must match dvmrpRouteSource and dvmrpRouteSourceMask for some entry in the dvmrpRouteTable." ::= { dvmrpPruneEntry 3 } dvmrpPruneExpiryTime OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The amount of time remaining before this prune should expire at the upstream neighbor. This value should be the minimum of the default prune lifetime and the remaining prune lifetimes of the local router's downstream neighbors, if any." ::= { dvmrpPruneEntry 4 } -- DVMRP Traps dvmrpTraps OBJECT IDENTIFIER ::= { dvmrp 7 } dvmrpNeighborLoss NOTIFICATION-TYPE OBJECTS { dvmrpInterfaceLocalAddress, -- The originator of the trap dvmrpNeighborState -- The new state } STATUS current DESCRIPTION "A dvmrpNeighborLoss trap signifies the loss of a 2-way adjacency with a neighbor. This trap should be generated when the neighbor state changes from active to one-way, ignoring, or down. The trap should be generated only if the router has no other neighbors on the same interface with a lower IP address than itself." ::= { dvmrpTraps 1 } dvmrpNeighborNotPruning NOTIFICATION-TYPE OBJECTS { dvmrpInterfaceLocalAddress, -- The originator of the trap dvmrpNeighborCapabilities } STATUS current DESCRIPTION "A dvmrpNeighborNotPruning trap signifies that a non-pruning neighbor has been detected (in an implementation-dependent manner). This trap should be generated at most once per generation ID of the neighbor. For example, it should be generated at the time a neighbor is first heard from if the prune bit is not set in its capabilities. It should also be generated if the local system has the ability to tell that a neighbor which sets the the prune bit in its capabilities is not pruning any branches over an extended period of time. The trap should be generated only if the router has no other neighbors on the same interface with a lower IP address than itself." ::= { dvmrpTraps 2 } -- conformance information dvmrpMIBConformance OBJECT IDENTIFIER ::= { dvmrpStdMIB 2 } dvmrpMIBCompliances OBJECT IDENTIFIER ::= { dvmrpMIBConformance 1 } dvmrpMIBGroups OBJECT IDENTIFIER ::= { dvmrpMIBConformance 2 } -- compliance statements dvmrpMIBCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for the DVMRP MIB." MODULE -- this module MANDATORY-GROUPS { dvmrpGeneralGroup, dvmrpInterfaceGroup, dvmrpNeighborGroup, dvmrpRoutingGroup, dvmrpTreeGroup } GROUP dvmrpSecurityGroup DESCRIPTION "This group is mandatory for agents which support both authentication and privacy of SNMP messages, and only for those network interfaces for which DVMRP is authenticating neighbors." ::= { dvmrpMIBCompliances 1 } -- units of conformance dvmrpGeneralGroup OBJECT-GROUP OBJECTS { dvmrpVersionString, dvmrpGenerationId, dvmrpNumRoutes, dvmrpReachableRoutes } STATUS current DESCRIPTION "A collection of objects used to describe general DVMRP configuration information." ::= { dvmrpMIBGroups 2 } dvmrpInterfaceGroup OBJECT-GROUP OBJECTS { dvmrpInterfaceLocalAddress, dvmrpInterfaceMetric, dvmrpInterfaceStatus, dvmrpInterfaceRcvBadPkts, dvmrpInterfaceRcvBadRoutes, dvmrpInterfaceSentRoutes } STATUS current DESCRIPTION "A collection of objects used to describe DVMRP interface configuration and statistics." ::= { dvmrpMIBGroups 3 } dvmrpNeighborGroup OBJECT-GROUP OBJECTS { dvmrpNeighborUpTime, dvmrpNeighborExpiryTime, dvmrpNeighborGenerationId, dvmrpNeighborMajorVersion, dvmrpNeighborMinorVersion, dvmrpNeighborCapabilities, dvmrpNeighborRcvRoutes, dvmrpNeighborRcvBadPkts, dvmrpNeighborRcvBadRoutes, dvmrpNeighborState } STATUS current DESCRIPTION "A collection of objects used to describe DVMRP peer configuration and statistics." ::= { dvmrpMIBGroups 4 } dvmrpRoutingGroup OBJECT-GROUP OBJECTS { dvmrpRouteUpstreamNeighbor, dvmrpRouteIfIndex, dvmrpRouteMetric, dvmrpRouteExpiryTime, dvmrpRouteUpTime, dvmrpRouteNextHopType } STATUS current DESCRIPTION "A collection of objects used to store the DVMRP routing table." ::= { dvmrpMIBGroups 5 } dvmrpSecurityGroup OBJECT-GROUP OBJECTS { dvmrpInterfaceInterfaceKey, dvmrpInterfaceInterfaceKeyVersion } STATUS current DESCRIPTION "A collection of objects used to store information related to DVMRP security." ::= { dvmrpMIBGroups 6 } dvmrpTreeGroup OBJECT-GROUP OBJECTS { dvmrpPruneExpiryTime } STATUS current DESCRIPTION "A collection of objects used to store information related to DVMRP prune state." ::= { dvmrpMIBGroups 7 } dvmrpNotificationGroup NOTIFICATION-GROUP NOTIFICATIONS { dvmrpNeighborLoss, dvmrpNeighborNotPruning } STATUS current DESCRIPTION "A collection of notifications for signaling important DVMRP events." ::= { dvmrpMIBGroups 8 } END -- -- Copyright (C) The Internet Society (1999). All Rights Reserved. -- -- This document and translations of it may be copied and furnished to -- others, and derivative works that comment on or otherwise explain it or -- assist in its implmentation may be prepared, copied, published and -- distributed, in whole or in part, without restriction of any kind, -- provided that the above copyright notice and this paragraph are included -- on all such copies and derivative works. However, this document itself -- may not be modified in any way, such as by removing the copyright notice -- or references to the Internet Society or other Internet organizations, -- except as needed for the purpose of developing Internet standards in -- which case the procedures for copyrights defined in the Internet -- Standards process must be followed, or as required to translate it into -- languages other than English. -- -- The limited permissions granted above are perpetual and will not be -- revoked by the Internet Society or its successors or assigns. -- -- This document and the information contained herein is provided on an "AS -- IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK -- FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT -- LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT -- INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR -- FITNESS FOR A PARTICULAR PURPOSE.