// ===================================================================
// Title:       Network OSPF 2.7
// Filename:    Network27_OSPF.mof
// Version:     2.7.0
// Status:      Final
// Date:        April 15, 2003
// ===================================================================
// Copyright 1998-2003 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.  
// DMTF is a not-for-profit association of industry members dedicated 
// to promoting enterprise and systems management and interoperability. 
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members, 
// provided that correct attribution is given. 
// As DMTF specifications may be revised from time to time, 
// the particular version and release date should always be noted.
//
// Implementation of certain elements of this standard or proposed 
// standard may be subject to third party patent rights, including 
// provisional patent rights (herein "patent rights"). DMTF makes 
// no representations to users of the standard as to the existence 
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or 
// claimants, nor for any incomplete or inaccurate identification or 
// disclosure of such rights, owners or claimants. DMTF shall have no 
// liability to any party, in any manner or circumstance, under any 
// legal theory whatsoever, for failure to recognize, disclose, or 
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product, 
// protocols or testing procedures. DMTF shall have no liability to 
// any party implementing such standard, whether such implementation 
// is foreseeable or not, nor to any patent owner or claimant, and shall 
// have no liability or responsibility for costs or losses incurred if 
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the 
// standard from any and all claims of infringement by a patent owner 
// for such implementations.
//
// For information about patents held by third-parties which have 
// notified the DMTF that, in their opinion, such patent may relate to 
// or impact implementations of DMTF standards, visit 
// http://www.dmtf.org/about/policies/disclosures.php.
// ===================================================================
// Description: The Network Model extends the management concepts to
//              represent protocol interfaces and network/protocol 
//              services.  This file defines classes to manage OSPF  
//              (Open Shortest Path First).  
//
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined 
//              by other working groups, are omitted.
// ==================================================================
// Change Log for v2.7
// CR788 - Add classes to support OSPF
// CR806 - Update the OSPF model to take into account the 
//         RangeOfIPAddresses class (vs IPAddressRange)
// CR837 - Add the property RFC1583Compatibility to OSPFService, and
//         add the property StubMetricType to OSPFAreaConfiguration
// CR863 - Update the format of the MappingStrings qualifier when
//         referencing IETF RFCs
// CR903 - Correction of EndpointInLink.Member reference.
// CR959 - Reposition OSPFLink using the ConnectivityCollection class
// CR982 - Removal of Experimental for preliminary to final
// CR994 - Update of the InstanceID property Description 
// ===================================================================
 
#pragma Locale ("en_US")


// ==================================================================== 
// OSPFArea 
// ==================================================================== 
   [Version ("2.7.0"), Description (
      "This class represents an OSPF area. The definition of an "
      "OSPF area from RFC2328, is 'OSPF allows sets of networks to "
      "be grouped together. Such a grouping is called an area. "
      "The topology of an area is hidden from the rest of the "
      "Autonomous System. This information hiding enables a "
      "significant reduction in routing traffic. Also, routing " 
      "within the area is determined only by the area's own " 
      "topology, lending the area protection from bad routing data.' " 
      "This class has a 'Type' propery, which distinguishes between the " 
      "different area types. This approach was chosen, because it " 
      "provides a simpler way to indicate the type of an area, " 
      "and additional subclassing is not needed at this time.") ] 
class CIM_OSPFArea : CIM_RoutingProtocolDomain { 

        [Description ( 
         "The area ID of this OSPF area, see C.2 in RFC 2328."), 
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfAreaId"} ] 
    uint32 AreaID; 

        [Required, Description ("The type of the OSPF area."), 
         ValueMap {"2", "3", "4"}, 
         Values {"Plain", "Stub", "NSSA"} ] 
    uint16 AreaType; 

        [Description ( 
         "When the number of non-default AS-external-LSAs in a " 
         "router's link-state database reaches this limit, the router " 
         "enters OverflowState, see 2.1 in RFC 1765."), 
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfExtLsdbLimit"} ] 
    uint32 ExtLsdbLimit; 
}; 
  

// ==================================================================== 
// OSPFService 
// ==================================================================== 
   [Version ("2.7.0"), Description ( 
      "This class is used to represent the basic operation of OSPF. " 
      "It is derived from the RouteCalculationService, the superclass " 
      "of all routing protocols.") ] 
class CIM_OSPFService : CIM_RouteCalculationService { 

        [Description ( 
         "This attribute indicates whether this router is running " 
         "MOSPF (multicast enhancements to OSPF) or not, " 
         "see B.1 in RFC 1584. This attribute only can be true, " 
         "when the SupportMOSPF property in OSPFService " 
         "Capabilities is also true. If SupportMOSPF is false, " 
         "then this property has no meaning."), 
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfMulticastExtensions"}, 
         ModelCorrespondence {
            "CIM_OSPFServiceCapabillities.SupportMOSPF"} ]
    boolean RunningMOSPF; 

        [Description ( 
         "This attribute indicates whether this router will forward " 
         "multicast datagrams between OSPF areas or not, see B.1 in " 
         "RFC 1584."), 
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfMulticastExtensions"} ] 
    boolean IsInterAreaMulticastForwarder; 

        [Description ( 
         "This attribute indicates whether this router will forward " 
         "multicast datagrams between Autonomous Systems or not, " 
         "see B.1 in RFC 1584."), 
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfMulticastExtensions"} ] 
    boolean IsInterAsMulticastForwarder; 

        [Description ( 
         "The number of seconds that, after entering OverflowState, " 
         "a router will attempt to leave OverflowState. When set to 0, " 
         "the router will not leave OverflowState until restarted, " 
         "see 2.1 in RFC 1765."), 
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfExitOverflowInterval"}, 
         Units ("Seconds") ] 
    uint32 ExitOverflowInterval; 
      
        [Description (
           "Controls the preference rules used in choosing among "
           "multiple AS-external-LSAs advertising the same destination. "
           "When set to TRUE, the preference rules remain those "
           "specified by RFC 1583. When set to FALSE, the "
           "preference rules are those stated in RFC 2328, which prevent "
           "routing loops when AS-external-LSAs for the same destination "
           "have been originated from different areas. See C.1 in "
           "RFC2328.") ]
    boolean RFC1583Compatibility;
}; 


// ================================================================== 
// OSPFServiceCapabilities 
// ================================================================== 
   [Version ("2.7.0"), Description ( 
      "The OSPFServiceCapabilities class represents the capabilities " 
      "of an OSPF service.") ] 
class CIM_OSPFServiceCapabilities : CIM_Capabilities { 

        [Description ( 
         "This attribute indicates whether this router supports NSSA " 
         "(\"not-so-stubby\") areas or not, see RFC 1587.") ] 
    boolean SupportNSSA; 

        [Description ( 
         "This attribute indicates whether this router supports " 
         "on-demand circuits or not, see RFC 1793."), 
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfDemandExtensions"} ] 
    boolean SupportOnDemand; 

        [Description ( 
         "This attribute indicates whether this router supports " 
         "MOSPF (multicast enhancements to OSPF) or not, " 
         "see B.1 in RFC 1584."), 
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfMulticastExtensions"} ] 
    boolean SupportMOSPF; 
}; 


// ==================================================================== 
// OSPFAreaConfiguration 
// ==================================================================== 
   [Version ("2.7.0"), Description ( 
      "Each OSPF router has an association to one or more OSPF areas. " 
      "Into these areas, a router advertises summaries filtered by " 
      "specific address ranges. This would natively be modeled as a "
      "ternary association (router/OSPFService to OSPFArea to "
      "RangeOfIPAddresses), which is problematic in some "
      "implementations. To get around this issue, the "
      "OSPFAreaConfiguration class is defined to act as a " 
      "focal point to bring together the router (indicated as a " 
      "ComputerSystem with an instance of OSPFService, associated to " 
      "the AreaConfiguration using OSPFServiceConfiguration), the area " 
      "(indicated as an OSPFArea, associated to the AreaConfiguration " 
      "using AreaOfConfiguration) and the address ranges for "
      "advertising (indicated as instances of RangeOfIPAddresses, "
      "associated to the AreaConfiguration using RangesOfConfiguration). "
      "There would be an instance of OSPFAreaConfiguration for each "
      "connected area of a router/OSPFService. \n"
      "\n" 
      "When network administrators want to control the " 
      "advertisements of OSPF routers by filters, they first define " 
      "the relevant ranges. In order for a router to handle a range, " 
      "an instance of RangeOfIPAddresses MUST be associated to the " 
      "relevant OSPFAreaConfiguration (using the relationship, RangesOf" 
      "Configuration). The association between the range and " 
      "area configuration contains a property defining the handling " 
      "(EnableAdvertise) to allow or disallow advertisements in the " 
      "range. \n"
      "\n" 
      "Notes: \n" 
      "- Because RangeOfIPAddresses is scoped by a System (via the " 
      "HostedCollection association),  an instance of "
      "RangeOfIPAddresses would be associated to an OSPFArea, "
      "satisfying this semantic. \n" 
      "- This class is inherited from LogicalElement, because " 
      "a suitable subclass 'lower' in the inheritance " 
      "hiearchy does not exist.") ] 
class CIM_OSPFAreaConfiguration : CIM_LogicalElement { 

        [Key, Description (
         "Within the scope of the instantiating Namespace, InstanceID " 
         "opaquely and uniquely identifies an instance of this class. "
         "In order to ensure uniqueness within the NameSpace, the "
         "value of InstanceID SHOULD be constructed using the "
         "following 'preferred' algorithm: \n"
         "  <OrgID>:<OSPFService ID><Area Configuration ID> \n" 
         "where: \n" 
         "  <OrgID> and the remainder of the InstanceID "
         "are separated by a colon ':', and where <OrgID> MUST "
         "include a copyrighted, trademarked or otherwise unique "
         "name that is owned by the business entity "
         "creating/defining the InstanceID, or is a registered ID that "
         "is assigned to the business entity by a recognized global "
         "authority. (This is similar to the <Schema Name>_<Class Name> "
         "structure of Schema class names.) In addition, to ensure "
         "uniqueness <OrgID> MUST NOT contain a colon (':'). When "
         "using this algorithm, the first colon to appear in "
         "InstanceID MUST appear between <OrgID> and the "
         "<OSPFService ID>. For DMTF defined instances, "
         "the 'preferred' algorithm MUST be used, and the "
         "<OrgID> set to 'CIM'. \n"
         "   <OSPFService ID> and <Area Configuration ID> MUST " 
         "specify vendor-unique identifiers for the OSPFService" 
         "and AreaConfiguration.") ] 
    string InstanceID;

        [Description ( 
         "This attribute contains the value of the default route that " 
         "this router advertises into a stub area, " 
         "see C.2 RFC 2328."), 
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfStubMetric"} ] 
    uint32 StubDefaultCost; 
      
        [Description (
         "This attribute contains the type of metric advertised as a "
         "default route into a stub area, see 3. in RFC 1850."),
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfStubMetricType"},
         ValueMap {"2", "3", "4"},
         Values {"OSPF Metric", "Comparable Cost", "NonComparable"} ]
    uint16 StubMetricType;
}; 
  

// ==================================================================== 
// OSPFLink 
// ==================================================================== 
   [Version ("2.7.0"), Description ( 
      "This class is used to represent OSPF connectivity between " 
      "two or more OSPF protocol endpoints.") ] 
class CIM_OSPFLink : CIM_ConnectivityCollection { 
 
        [Required, Description ( 
         "The type of the OSPF link, see section 1.2 in RFC 2328."), 
         ValueMap {"2", "3", "4", "5"}, 
         Values {"Point-To-Point", "Point-To-Multipoint", "Broadcast", 
            "NBMA"} ] 
    uint16 LinkType; 
 
        [Description ( 
         "The time, in seconds, between sending OSPF Hello-packets " 
         "over the interface, see section C.3 in RFC 2328." ), 
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfIfHelloInterval"}, 
         Units ("Seconds") ] 
    uint32 HelloInterval; 
 
        [Description ( 
         "After ceasing to hear a router's Hello-packets, the number " 
         "of seconds before its neighbors declare the router down, " 
         "see section C.3 in RFC 2328." ), 
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfIfRtrDeadInterval"}, 
         Units ("Seconds") ] 
    uint32 RouterDeadInterval; 
 
        [Required, Description ( 
         "This parameter indicates whether IP multicast datagrams " 
         "should be forwarded over this OSPF link, and if so, how " 
         "the forwarding should be done, see section B.2 in RFC 1584."), 
         MappingStrings {"MIB.IETF|OSPF-MIB.ospfIfMulticastForwarding"}, 
         ValueMap {"2", "3", "4"}, 
         Values {"Disabled", "Data-link Multicast", 
            "Data-link Unicast"} ] 
    uint16 MulticastForwarding; 
}; 

// ==================================================================== 
// AreaOfConfiguration 
// ==================================================================== 
   [Association, Version ("2.7.0"), Description ( 
      "This association connects an area configuration to its area. " 
      "The OSPFAreaConfiguration class is defined to act as a " 
      "focal point to bring together the router (indicated as a " 
      "ComputerSystem with an instance of OSPFService, associated to the " 
      "AreaConfiguration using OSPFServiceConfiguration), the area " 
      "(indicated as an OSPFArea, associated to the AreaConfiguration " 
      "using AreaOfConfiguration) and the address ranges for " 
      "advertising (indicated as instances of RangeOfIPAddresses, "
      "associated to the AreaConfiguration using RangesOfConfiguration). "
      "There is an instance of OSPFAreaConfiguration for each connected " 
      "area of a router/OSPFService.") ] 
class CIM_AreaOfConfiguration : CIM_Dependency { 

        [Override ("Antecedent"), Max (1), Description ( 
         "The OSPF area.") ] 
    CIM_OSPFArea REF Antecedent ; 

        [Override ("Dependent"), Description ( 
         "The configuration which is applied to an OSPF area. This " 
         "is the Dependent reference in this association, since it " 
         "depends on the area for any functional significance.") ] 
    CIM_OSPFAreaConfiguration REF Dependent; 
}; 
  

// ==================================================================== 
// OSPFServiceConfiguration 
// ==================================================================== 
   [Association, Version ("2.7.0"), Description ( 
      "OSPFServiceConfiguration connects an OSPF service to its area " 
      "configurations. The configurations are defined for the OSPF" 
      "Service, and so do not make sense as stand alone objects. " 
      "This is the reason for the Min (1), Max (1) cardinalities on " 
      "OSPFService. They mandate the instantiation of the service " 
      "and of this association for the referenced instance of " 
      "OSPFAreaConfiguration.  The area configuration acts as " 
      "a focal point to bring together the router (indicated as a " 
      "ComputerSystem with an instance of OSPFService, associated to " 
      "the AreaConfiguration using this relationship), the area " 
      "(indicated as an OSPFArea, associated to the AreaConfiguration " 
      "using AreaOfConfiguration) and the address ranges for advertising " 
      "(indicated as instances of RangeOfIPAddresses, associated to the "
      "AreaConfiguration using RangesOfConfiguration). There would be an "
      "instance of OSPFAreaConfiguration for each connected area of a " 
      "router/OSPFService.") ] 
class CIM_OSPFServiceConfiguration : CIM_Dependency { 

        [Override ("Antecedent"), Min (1), Max (1), Description ( 
         "The OSPF service.") ] 
    CIM_OSPFService REF Antecedent ; 

        [Override ("Dependent"), Description ( 
         "The area configuration.") ] 
    CIM_OSPFAreaConfiguration REF Dependent; 
}; 
  

// ==================================================================== 
// RangesOfConfiguration 
// ==================================================================== 
   [Association,  Version ("2.7.0"), Description ( 
      "This association connects address ranges to the OSPF area " 
      "configuration. When network administrators want to control the " 
      "advertisements of OSPF routers by filters, they first define " 
      "the relevant ranges. In order for a router to handle a range, " 
      "an instance of RangeOfIPAddresses MUST be associated to the " 
      "router's OSPFAreaConfiguration, using this relationship. The " 
      "association between the range and area configuration contains " 
      "a property (EnableAdvertise) defining the handling - " 
      "to allow or disallow advertismenets in the range.") ] 
class CIM_RangesOfConfiguration : CIM_Dependency { 

        [Override ("Antecedent"), 
         Description ( 
         "The address range that is in the OSPF area configuration.") ] 
    CIM_RangeOfIPAddresses REF Antecedent; 

        [Override ("Dependent"), 
         Description ( 
         "The OSPF area configuration that contains the range.") ] 
    CIM_OSPFAreaConfiguration REF Dependent; 

        [Description ( 
         "The address range is advertised (TRUE) or not (FALSE), " 
         "see C.2 in RFC 2328.") ] 
    boolean EnableAdvertise; 
}; 
  

// ==================================================================== 
// EndpointInLink 
// ==================================================================== 
    [Association, Aggregation, Version ("2.7.0"), 
    Description ( 
      "This association connects an OSPFLink to the OSPFProtocol" 
      "Endpoints that this link aggregates.") ] 
class CIM_EndpointInLink : CIM_MemberOfCollection { 
 
        [Aggregate, Override ("Collection"), Max (1), 
         Description ("The OSPF link.") ] 
    CIM_OSPFLink REF Collection; 
 
        [Override ("Member"), 
         Description ("The OSPF protocol endpoint.") ] 
    CIM_OSPFProtocolEndpointBase REF Member; 
}; 
  

// ==================================================================== 
// EndpointInArea 
// ==================================================================== 
   [Association, Aggregation, Composition,  
    Version ("2.7.0"), Description ( 
      "This relation connects an OSPF endpoint to an area.") ] 
class CIM_EndpointInArea : CIM_Component { 

        [Aggregate, Override ("GroupComponent"), Min (1), Max (1), 
         Description ("The OSPF area.") ] 
    CIM_OSPFArea REF GroupComponent; 

        [Override ("PartComponent"), 
         Description ("The OSPF endpoint in the area.") ] 
    CIM_OSPFProtocolEndpointBase REF PartComponent; 
}; 
  

// ===================================================================
// end of file
// ===================================================================
