(file) Return to CIM_Network26.mof CVS log (file) (dir) Up to [Pegasus] / pegasus / Schemas / CIM26

   1 karl  1.2 // ===================================================================
   2           // Title:       Network MOF Specification 2.6
   3           // Filename:    CIM_Network26.mof
   4           // Version:     2.6.0
   5           // Status:      Final
   6           // Date:        06/04/2002
   7           // ===================================================================
   8           // Copyright 1998-2002 Distributed Management Task Force, Inc. (DMTF).
   9           // All rights reserved.  
  10           // DMTF is a not-for-profit association of industry members dedicated 
  11           // to promoting enterprise and systems management and interoperability. 
  12           // DMTF specifications and documents may be reproduced for uses
  13           // consistent with this purpose by members and non-members, 
  14           // provided that correct attribution is given. 
  15           // As DMTF specifications may be revised from time to time, 
  16           // the particular version and release date should always be noted.
  17           //
  18           // Implementation of certain elements of this standard or proposed 
  19           // standard may be subject to third party patent rights, including 
  20           // provisional patent rights (herein "patent rights"). DMTF makes 
  21           // no representations to users of the standard as to the existence 
  22 karl  1.2 // of such rights, and is not responsible to recognize, disclose, or
  23           // identify any or all such third party patent right, owners or 
  24           // claimants, nor for any incomplete or inaccurate identification or 
  25           // disclosure of such rights, owners or claimants. DMTF shall have no 
  26           // liability to any party, in any manner or circumstance, under any 
  27           // legal theory whatsoever, for failure to recognize, disclose, or 
  28           // identify any such third party patent rights, or for such party’s
  29           // reliance on the standard or incorporation thereof in its product, 
  30           // protocols or testing procedures. DMTF shall have no liability to 
  31           // any party implementing such standard, whether such implementation 
  32           // is foreseeable or not, nor to any patent owner or claimant, and shall 
  33           // have no liability or responsibility for costs or losses incurred if 
  34           // a standard is withdrawn or modified after publication, and shall be
  35           // indemnified and held harmless by any party implementing the 
  36           // standard from any and all claims of infringement by a patent owner 
  37           // for such implementations.
  38           //
  39           // For information about patents held by third-parties which have 
  40           // notified the DMTF that, in their opinion, such patent may relate to 
  41           // or impact implementations of DMTF standards, visit 
  42           // http://www.dmtf.org/about/policies/disclosures.php.
  43 karl  1.2 // ===================================================================
  44           // Description: These object classes defined the DMTF Network Model
  45           //		and include classes to represent protocol interfaces 
  46           //		and network/protocol services (such as VLANs, BGP,  
  47           //          bridging and quality of service). 
  48           //
  49           //		The object classes below are listed in an order that
  50           //          avoids forward references. Required objects, defined 
  51           //          by other working groups, are omitted.
  52           // ===================================================================
  53           // References:  The information model represented here is based on
  54           //              the following RFCs: BGP: 1657, 1700, 1771, 1965, 1966,
  55           //              and 1997; Bridge: 1493 and 1525; VLAN includes
  56           //              compliance with the 802.1q specification. Also, MAC
  57           //              address formats are required to be in canonical form,
  58           //              as stated in RFC 2469.
  59           //
  60           //              The QoS model is based on the IETF DiffServ RFCs
  61           //              (2474, 2475, 2597, and 2598), as well as other
  62           //              related drafts (the conceptual model, the MIB,
  63           //              and to a small extent, the PIB).
  64 karl  1.2 // ===================================================================
  65           // Date:  04/21/1999 - Initial release of the model, consolidating 
  66           //                      each of the sub-models into a single spec
  67           //                      for CIM V2.2
  68           //        05/06/1999 - Incorporated CR324, deleted references to the 
  69           //                      User Model (this functionality will be added 
  70           //                      back into CIM in V2.3)
  71           //        05/16/1999 - Fixed typos; Incorporated Novell
  72           //                      member review comments
  73           //        06/10/1999 - Added CRs 308a, 324a, 356a, 390a, 391b, 
  74           //                      404a, and 413
  75           //        07/03/1999 - Miscellaneous changes according to CR cisco022
  76           //        02/26/2000 - Incorporated the following CRs: 448b (this added
  77           //                      ManagedElement to the Core model); CIMCR 454 
  78           //                      and 455 (misc changes to the Network model)
  79           //        02/27/2000 - Incorporated CR464, which promotes the
  80           //                      CIM_ServiceComponent and the
  81           //                      CIM_AdapterActiveConnection classes to Core
  82           //        06/18/2000 - Integrated the QoS model into the Network model
  83           //                      (CR499)
  84           // (ERRATA)            (CR500) - Corrected keys of BGPPathAttributes
  85 karl  1.2 // (ERRATA)            (CR501) - Correced cardinality of Forwarded
  86           //                      Routes (Antecedent must be Min (1), Max (1))
  87           // (ERRATA)            (CR506) - Corrected subclassing of Network
  88           //                      ServicesInAdminDomain
  89           // (ERRATA)            (CR508) - Corrected 3 BGP-specific 
  90           //                      associations - EGPRouteCalcDependency, 
  91           //                      BGPAttributesForRoute and BGPPeerUsesRouteMap
  92           // (ERRATA)            (CR510) - Removed subclassing from CIM_
  93           //                      Dependency to not force reference name changes
  94           //                      (LogicalNetworkService and NetworksInAdminDomain)
  95           // (ERRATA)            (CR512) - SwitchPortXXXStatistics should 
  96           //                      subclass from SAPStatisticalInformation (not
  97           //                      SAPStatistics) and TransparentBridgingStatic
  98           //                      Forwarding was incorrectly named SwitchService
  99           //                      StaticForwarding (cut and paste error)
 100           //                     Added MOF for the following CRs:
 101           //                      CR483 updated the enum for ForwardingService.
 102           //                        ProtocolType
 103           //                      CR484 added "IB" and "FC" to various enums
 104           //                      CR485 created PortImplementsEndpoint 
 105           //                      CR489 added "Policy Repository" to AdminDomain's
 106 karl  1.2 //                        NameFormat enumeration
 107           //                      CR490a added missing associations, FilterListIn
 108           //                        System and FilterEntryInSystem
 109           //                      CR492a added FilterEntryBase, subclasses Filter
 110           //                        Entry from it and updates EntriesInFilterList
 111           //                      CR496 corrected use of SQL reserved words
 112           //                      CR498 added to the existing enums, and defined
 113           //                        two new properties of FilterEntry
 114           //                      CR502 added IsNegated boolean to FilterEntryBase
 115           //                      CR503 - Member comments on QoS 
 116           //                      CR507a removed Min (1) or Max (1) from some
 117           //                       association references, to generalize them
 118           //                      CR509 added Override qualifier which was 
 119           //                       missing on three associations 
 120           //                      CR521, 522 and 523 - Miscellaneous QoS Device
 121           //                       changes to generalize, simplify and better
 122           //                       correspond to the IETF DiffServ MIB and Model
 123           //        01/20/2001 - CR552 (Add ProtocolType enum to ProtocolEndpoint)
 124           //                     CR553 (Add NextHopRouting, subclass IPRoute from
 125           //                            it and update)
 126           //                     CR554 (Misc changes in descriptions for FilterEntry
 127 karl  1.2 //                            and AdministrativeDistance)
 128           //                     CR556 (Update Descriptions for
 129           //                            TransparentBridgingService,
 130           //                            SpanningTreeService and SoureRouteService)
 131           //                     CR559a (Errata-Use of SQL reserved word in 
 132           //                             CIM_RouteCalculationService (Type) )
 133           //                     CR561 (Need to add Override qualifiers to the 
 134           //                            CollectedBufferPool association)
 135           //                     CR564 (Move AdminDomain to the Core Model, change
 136           //                            to concrete, and update description)
 137           //                     CR565 (Update description for BridgeAddress property
 138           //                            of SwitchService to be more generic)
 139           //                     CR566 (ERRATA - Align with IETF DiffServ Mode)
 140           //                     CR567 (Update FilterList.Direction)
 141           //        10/11/2001 - CR589 (Correct propagated keys of AdminDistance)
 142           //                     CR592a (Correct propagated keys of IPRoute and
 143           //                             LogicalNetwork)
 144           //                     CR615b (Add IPHeadersFilters)
 145           //        12/02/2001 - CR656 (Replace MOF lost after V2.4 and compile
 146           //                       errors) 
 147           //                     CR659 (Correct subclassing of PrecedenceService)
 148 karl  1.2 //        03/10/2002 - CR736 (Provide for address ranges in IPHeaders
 149           //                       Filter, update several descriptions and define
 150           //                       HdrDSCPs as an array)
 151           //                     CR745 (Style and minor inconsistencies corrected
 152           //                       in moving to V2.6 Final; Version qualifier 
 153           //                       added to all classes)
 154           //        06/04/2002 - Company review comments for Final V2.6 release
 155           // (ERRATA)            (CR802) - Datatype for LogicalNetwork.NetworkType
 156           //                      should be uint16, not string 
 157           // (ERRATA)            (CR843) - Datatype for ProtocolEndpoint.
 158           //                      ProtocolType should be uint16, not string / 
 159           //                      Add to the enum to address all DMTF subclasses
 160           // ===================================================================
 161           
 162           // ===================================================================
 163           // Generic Pragmas
 164           // ===================================================================
 165           #pragma Locale ("en_US")
 166           
 167           
 168           // ==================================================================
 169 karl  1.2 //     NetworkService
 170           // ==================================================================
 171                   [Abstract, Version ("2.6.0"), Description (
 172                    "This is an abstract base class, derived from the Service "
 173                    "class. It serves as the root of the network service "
 174                    "hierarchy. Network services represent generic functions "
 175                    "that are available from the network that configure and/or "
 176                    "modify the traffic being sent. For example, FTP is not a "
 177                    "network service, as it simply passes data unchanged from "
 178                    "source to destination. On the other hand, services "
 179                    "that provide quality of service (e.g., DiffServ) and "
 180                    "security (e.g., IPSec) do affect the traffic stream. "
 181                    "Quality of service, IPSec, and other services are "
 182                    "subclasses of this class. This class hierarchy enables "
 183                    "developers to match services to users, groups, "
 184                    "and other objects in the network.") ]
 185           class CIM_NetworkService : CIM_Service {
 186                   [Description (
 187                    "This is a free-form array of strings that provide "
 188                    "descriptive words and phrases that can be used in queries "
 189                    "to help locate and identify instances of this service.") ] 
 190 karl  1.2     string Keywords [ ];
 191                   [Description (
 192                    "This is a URL that provides the protocol, network "
 193                    "location, and other service-specific information required "
 194                    "in order to access the service. This should be implemented "
 195                    "as a LabeledURI, with syntax DirectoryString and a "
 196                    "matching rule of CaseExactMatch, for directory "
 197                    "implementors.") ]
 198               string ServiceURL;
 199                   [Description (
 200                    "This is a free-form array of strings that specify any "
 201                    "specific pre-conditions that must be met in order for this "
 202                    "service to start correctly. It is expected that subclasses "
 203                    "will refine the inherited StartService() and StopService()"
 204                    "methods to suit their own application-specific needs. This "
 205                    "property is used to specify application-specific conditions "
 206                    "needed by the refined StartService and StopService"
 207                    "methods.") ]
 208               string StartupConditions [ ];
 209                    [Description (
 210                    "This is a free-form array of strings that specify any "
 211 karl  1.2          "specific parameters that must be supplied to the "
 212                    "StartService() method in order for this service to start "
 213                    "correctly. It is expected that subclasses will refine the "
 214                    "inherited StartService() and StopService() methods to suit "
 215                    "their own application-specific needs. This property is used "
 216                    "to specify application-specific parameters needed by the "
 217                    "refined StartService and StopService methods.") ]
 218               string StartupParameters [ ];
 219           };
 220           
 221           // ==================================================================
 222           //     NetworkServicesInAdminDomain
 223           // ==================================================================
 224                   [Association, Version ("2.6.0"), Description (
 225                    "  This association establishes the Dependency relationships "
 226                    "that exist between an administrative domain and the Network"
 227                    "Services that it hosts. This also has the semantics that "
 228                    "the associated Services are commonly administered. \n"
 229                    "  This relationship could be viewed as a kind of Hosted"
 230                    "Service. However, the latter carries the additional "
 231                    "semantics of 'weak'ness (or naming) the NetworkService "
 232 karl  1.2          "relative to the hosted System. NetworkServices are scoped/"
 233                    "named by the network device that 'hosts' them, not by "
 234                    "the AdminDomain in which they are administered. Therefore, "
 235                    "this relationship is similar to HostedService, but not a "
 236                    "subclass of it.") ]
 237           class CIM_NetworkServicesInAdminDomain : CIM_Dependency {
 238                   [Override ("Antecedent"), Min (1), Description (
 239                    "The AdminDomain that hosts and administers the various "
 240                    "network services.") ]
 241               CIM_AdminDomain REF Antecedent;
 242                   [Override ("Dependent"), Description (
 243                    "The network service that is hosted in the administrative "
 244                    "domain.") ] 
 245               CIM_NetworkService REF Dependent;
 246           };
 247           
 248           // ==================================================================
 249           //    ForwardingService
 250           // ==================================================================
 251                   [Version ("2.6.0"), Description (
 252                    "This class represents the functions used in forwarding "
 253 karl  1.2          "network traffic. Its instances act on packets received"
 254                    "from one or more ProtocolEndpoints or Services, and "
 255                    "drop (discard), or send those packets to one or more "
 256                    "other ProtocolEndpoints or Services. The explicit "
 257                    "Endpoints being forwarded between, are described using the "
 258                    "ForwardsAmong association (or one of its subclasses). "
 259                    "\n\n"
 260                    "ForwardingService is different than RouteCalculation"
 261                    "Service in that it represents a way to forward "
 262                    "traffic independent of calculating routing information "
 263                    "(e.g., using static routing). Generally, the Endpoints "
 264                    "among which a ForwardingService routes data are at the "
 265                    "same protocol layer and are usually of similar types, "
 266                    "or of the same type. This kind of service is used in the  "
 267                    "implementation of routers, switches and other network "
 268                    "devices.") ] 
 269           class CIM_ForwardingService : CIM_NetworkService {
 270                   [Description (
 271                    "This defines the type of protocol that is being "
 272                    "forwarded."),
 273                    ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8",
 274 karl  1.2           "9", "10", "11", "12", "13", "14", "15", "16",
 275                     "17", "18", "19"},
 276                    Values {"Unknown", "Other", "IPv4", "IPv6", "IPv4/IPv6",
 277                     "IPX", "AppleTalk", "DECnet", "SNA", "CONP",
 278                     "CLNP", "VINES", "XNS", "ATM", "Frame Relay", 
 279                     "Ethernet", "TokenRing", "FDDI", "Infiniband", 
 280                     "Fibre Channel"} ]
 281               uint16 ProtocolType;
 282                   [MaxLen(32), Description (
 283                    "This defines the type of protocol that is being forwarded "
 284                    "when the value of the ProtocolType attribute is 1 (i.e., "
 285                    "\"Other\"). This provides for future extensibility."),
 286                    ModelCorrespondence {"CIM_ForwardingService.ProtocolType"} ]
 287               string OtherProtocolType;
 288           };
 289           
 290           // ==================================================================
 291           //     AutonomousSystem
 292           // ==================================================================
 293           	  [Version ("2.6.0"), Description (
 294                    "An Autonomous System (AS) is a fundamental concept in "
 295 karl  1.2          "networking. An AS provides a structured view of routing by "
 296                    "segregating the system that is using routing (e.g., the "
 297                    "Internet, or an extranet) into a set of separately "
 298                    "administered domains that each have their own independent "
 299                    "routing policies. These domains are called  autonomous "
 300                    "systems."
 301                    "\n\n"
 302                    "The classic definition of an AS, from RFC1771, is '...a set "
 303                    "of  routers under a single technical administration, using "
 304                    "an interior gateway protocol and common metrics to route "
 305                    "packets within the AS, and using an exterior gateway "
 306                    "protocol to route packets to other ASs'. The RFC continues: "
 307                    "'Since this classic definition was developed, it has become "
 308                    "common for a single AS to use several interior gateway "
 309                    "protocols and sometimes several sets of metrics "
 310                    "within an AS.  The use of the term Autonomous System here "
 311                    "stresses the fact that, even when multiple IGPs and metrics "
 312                    "are used, the administration of an AS appears to other ASs "
 313                    "to have a single coherent interior routing plan and "
 314                    "presents a consistent picture of what destinations are "
 315                    "reachable through it.'") ]
 316 karl  1.2 class CIM_AutonomousSystem : CIM_AdminDomain {
 317                   [Description (
 318           	   "An ASNumber is an integer between 1 and 65535, with the "
 319                    "range 64512 through 65535 reserved for private use. Every "
 320                    "AS has a unique AS number, which is assigned to it by an "
 321                    "Internet Registry or a provider. IANA assigns and "
 322                    "administers AS numbers.") ]
 323               uint16 ASNumber;
 324                   [Description (
 325                    "IsSingleHomed is a boolean that, when its value is TRUE, "
 326                    "indicates that this AS reaches networks outside of its "
 327                    "domain through a single exit point. Whether a given AS is "
 328                    "single-homed or not has important ramifications for BGP "
 329                    "configuration.") ]
 330               boolean IsSingleHomed;
 331                   [Description (
 332                    "IsTransit is a boolean that, when its value is TRUE, "
 333                    "indicates that this AS will advertise routes that it "
 334                    "learns from other ASs. A non-transit AS will only "
 335                    "advertise its own routes.") ]
 336               boolean IsTransit;
 337 karl  1.2         [Description (
 338                    "RequireIGPSync is a boolean that, when its value is TRUE, "
 339                    "indicates that this AS must obey the following BGP rule: a "
 340                    "BGP router should not advertise destinations learned from "
 341                    "internal BGP neighbors to external BGP destinations unless "
 342                    "those destinations are also known via some internal gateway "
 343                    "protocol. Otherwise, a BGP router may receive traffic that "
 344                    "cannot yet be routed. However, since this is a costly "
 345                    "choice, it is common practice to allow this rule to be "
 346                    "broken under certain carefully controlled circumstances.") ]
 347               boolean RequireIGPSync;
 348                   [Description (
 349                    "RoutingUpdateSource defines how routing information is to "
 350                    "be injected into BGP. Statically injected routes are "
 351                    "maintained by the routing table and are independent of the "
 352                    "status of the networks that they refer to. This is done by "
 353                    "defining static routes in the BGP routing table. "
 354                    "Dynamically injected routes are of two types. "
 355                    "Dynamic routes refer to distributing all of the IGP routes "
 356                    "into BGP. Semi-dynamic routes define a set of specific IGP "
 357                    "routes that will be injected into BGP."),
 358 karl  1.2          ValueMap {"0", "1", "2", "3"},
 359                    Values {"Unknown", "Static", "Dynamic", "Semi-Dynamic"} ]
 360               uint16 RoutingUpdateSource; 
 361                   [Description (
 362                    "Route aggregation refers to summarizing ranges of routes "
 363                    "into one or more aggregate routes. This is done to minimize "
 364                    "the number of routes in the global routing table. A "
 365                    "potential drawback is that specific path information (e.g., "
 366                    "AS_Path attribute value) is lost, which may lead to "
 367                    "potential routing loops. There are a variety of ways to "
 368                    "ensure that this does not happen. Note, however, that BGP4 "
 369                    "is required to do this. "
 370                    "\n\n"
 371                    "There are many ways to form aggregate routes. The following "
 372                    "are the most popular: 'Aggregate only', where only the "
 373                    "aggregate is advertised, and all of its more specific "
 374                    "routes are suppressed; 'Aggregate Plus Specific Routes', "
 375                    "where both the aggregate as well as its more specific "
 376                    "routes are advertised (e.g., send the aggregate to the NAP, "
 377                    "but send the more specific routes to providers); "
 378                    "'Aggregate Based on a Subset of Specific Routes', where the "
 379 karl  1.2          "aggregate route is formed by looking at certain more "
 380                    "specific routes and forming an aggregate on them, "
 381                    "suppressing all others."),
 382                    ValueMap {"0", "1", "2", "3", "4"},
 383                    Values {"Unknown", "None", "Aggregate Only ",
 384                     "Aggregate And All Specific Routes ",
 385                     "Aggregate Based on Subset of Specific Routes"} ]
 386               uint16 AggregationType;
 387           };
 388           
 389           // ==================================================================
 390           //     LogicalNetwork
 391           // ==================================================================
 392                   [Version ("2.6.0"), Description (
 393                    "A LogicalNetwork groups together a set of "
 394                    "ProtocolEndpoints of a given type which are able to "
 395                    "communicate with each other directly. It is used for "
 396                    "describing the characteristics of the grouping "
 397                    "and/or its associated medium. A LogicalNetwork "
 398                    "represents the ability to send and/or receive data "
 399                    "over a network.") ]
 400 karl  1.2 class CIM_LogicalNetwork : CIM_CollectionOfMSEs {
 401                   [Propagated ("CIM_AdminDomain.CreationClassName"), Key, 
 402           	   MaxLen (256), Description (
 403                    "The scoping AdminDomain's CreationClassName.") ] 
 404               string SystemCreationClassName;
 405                   [Propagated ("CIM_AdminDomain.Name"), Key, MaxLen (256),
 406           	   Description ("The scoping AdminDomain's Name.") ] 
 407               string SystemName;
 408                   [Key, MaxLen (256), Description (
 409                    "CreationClassName indicates the name of the class or the "
 410                    "subclass used in the creation of an instance. When used "
 411                    "with the other key properties of this class, this property "
 412                    "allows all instances of this class and its subclasses to "
 413                    "be uniquely identified.") ]
 414               string CreationClassName;
 415                   [Key, MaxLen (256), Description (
 416                    "The Name property defines the label by which the object is "
 417           	   "known.") ] 
 418               string Name;
 419                   [Description (
 420                    "Type is an enumeration that provides additional "
 421 karl  1.2          "information that can be used to help categorize and "
 422                    "classify different instances of this class. "
 423                    "\n\n"
 424                    "Subclasses should ensure that they are of the "
 425                    "appropriate type defined in the Type enumeration. "
 426                    "That is, the IPSubnet subclass should define its "
 427                    "property as either IPv4 or IPv6, as opposed to, "
 428                    "for example, ATM."),
 429                    ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
 430                     "10", "11", "12", "13", "14", "15", "16", "17", "18"},
 431                    Values {"Unknown", "Other", "IPv4", "IPv6",
 432                     "IPX", "AppleTalk", "DECnet", "SNA", "CONP",
 433                     "CLNP", "VINES", "XNS", "ATM", "Frame Relay",
 434                     "Ethernet", "TokenRing", "FDDI", "Infiniband", 
 435                     "Fibre Channel"},
 436                    ModelCorrespondence {
 437                     "CIM_LogicalNetwork.OtherTypeDescription"} ]
 438              uint16 NetworkType;
 439                   [MaxLen(64), Description (
 440                    "A string describing the type of protocol that is "
 441                    "being run by this LogicalNetwork, when the value of "
 442 karl  1.2          "the Type property (or any of its subclasses) "
 443                    "is set to 1 (i.e., \"Other\"). This property "
 444                    "should be set to NULL when the Type property is "
 445                    "any value other than 1."),
 446           	   ModelCorrespondence {"CIM_LogicalNetwork.NetworkType"} ]
 447              string OtherTypeDescription;
 448           };
 449           
 450           // ==================================================================
 451           //     LogicalNetworkService
 452           // ==================================================================
 453                   [Association, Version ("2.6.0"), Description (
 454                    "A LogicalNetworkService represents network services that "
 455                    "either originate and/or terminate in a LogicalNetwork. This "
 456                    "enables management applications to more easily identify "
 457                    "services that are provided by particular network devices.") ]
 458           class CIM_LogicalNetworkService  {
 459                   [Key, Description (
 460                    "The LogicalNetwork that contains the network service.") ]
 461               CIM_LogicalNetwork REF Network;
 462                   [Key, Description (
 463 karl  1.2 	   "The NetworkService that is running in the LogicalNetwork.") ] 
 464               CIM_NetworkService REF NetworkService;
 465                   [Description (
 466           	   "An enumeration that explicitly defines this network service "
 467                    "as originating, terminating, or residing in this "
 468                    "LogicalNetwork."),
 469                    ValueMap {"0", "1", "2", "3"},
 470                    Values {"Unknown", "Originates In", "Terminates In",
 471                     "Resides In"} ]
 472               uint16 ContainmentType;
 473           };
 474           
 475           // ==================================================================
 476           //     IPSubnet
 477           // ==================================================================
 478                   [Version ("2.6.0"), Description (
 479                    "An IPSubnet represents a group of related "
 480                    "IPProtocolEndpoints that can communicate with each other "
 481                    "directly using IP. It is used for describing the "
 482                    "characteristics of the grouping.") ]
 483           class CIM_IPSubnet : CIM_LogicalNetwork {
 484 karl  1.2         [Description (
 485                    "The IP address of the entire subnet, formatted according "
 486                    "to the appropriate convention as defined in the AddressType "
 487                    "property of this class. "
 488                    "\n\n"
 489                    "Note that CIDR format is not supported for this release. " 
 490                    "This is because, without more formal methods like "
 491                    "constraints, it is possible to create different instances "
 492                    "of the same object that have different naming formats."
 493                    "\n\n"
 494                    "IPv4-compatible addresses should be used instead of IPv6 "
 495                    "addresses (see RFC 2373, section 2.5.4). In order to have a "
 496                    "consistent format for IPv4 addresses in a mixed IPv4/v6 "
 497                    "environment, all IPv4 addresses and both IPv4-compatible "
 498                    "IPv6 addresses and IPv4-mapped IPv6 addresses (per "
 499                    "RFC 2373, section 2.5.4) should be formatted in standard "
 500                    "IPv4 format.") ]
 501               string SubnetNumber;
 502                   [Description (
 503                    "The mask for the starting IP address of the IPSubnet, "
 504                    "formatted according to the appropriate convention as "
 505 karl  1.2          "defined in the AddressType property of this class " 
 506                    "(e.g., '255.255.252.0').") ] 
 507               string SubnetMask;
 508                   [Description (
 509                    "An enumeration that describes the format of the address "
 510                    "property. Addresses that can be formatted in IPv4 format, "
 511                    "must be formatted that way to ensure mixed IPv4/IPv6 "
 512                    "support."),
 513                    ValueMap {"0", "1", "2"},
 514                    Values {"Unknown", "IPv4", "IPv6"} ]
 515               uint16 AddressType;
 516           };
 517           
 518           // ==================================================================
 519           //     ProtocolEndpoint
 520           // ==================================================================
 521                   [Version ("2.6.0"), Description (
 522                    "A communication point from which data may be sent or "
 523                    "received. ProtocolEndpoints link router interfaces and "
 524                    "switch ports to LogicalNetworks.") ]
 525           class CIM_ProtocolEndpoint : CIM_ServiceAccessPoint {
 526 karl  1.2         [Override ("Name"), MaxLen(256), Description (
 527                    "A string which identifies this ProtocolEndpoint with either "
 528                    "a port or an interface on a device. To ensure uniqueness, "
 529                    "the Name property should be prepended or appended with "
 530                    "information from the Type or OtherTypeDescription "
 531                    "properties. The method chosen is described in the "
 532                    "NameFormat property of this class.") ]
 533               string Name;
 534                   [MaxLen (256), Description (
 535                    "NameFormat contains the naming heuristic that is chosen to "
 536                    "ensure that the value of the Name property is unique. For "
 537                    "example, one might choose to prepend the name of the port "
 538                    "or interface with the Type of ProtocolEndpoint that this "
 539                    "instance is (e.g., IPv4) followed by an underscore.") ]
 540               string NameFormat;
 541                   [Description (
 542                    "ProtocolType is an enumeration providing information to "
 543                    "categorize and classify different instances of this class. "
 544                    "For most instances, information in this enumeration and the "
 545                    "subclass' definition overlap. However, there are several cases "
 546                    "where a specific subclass of ProtocolEndpoint is not required "
 547 karl  1.2          "(for example, there is no Fibre Channel Endpoint). Hence, this "
 548                    "property is needed to define the type of Endpoint. Note that "
 549                    "in a future major release of the CIM Schema, it is likely "
 550                    "that ProtocolEndpoint will be ABSTRACT, forcing "
 551                    "subclassing and removing the need for this property."), 
 552                    ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
 553                     "10", "11", "12", "13", "14", "15", "16", "17", "18", 
 554                     "19", "20", "21", "22", "23", "24", "25", "26", "27"},
 555                    Values {"Unknown", "Other", "IPv4", "IPv6", "IPX", 
 556                     "AppleTalk", "DECnet", "SNA", "CONP", "CLNP",
 557                     "VINES", "XNS", "ATM", "Frame Relay",
 558                     "Ethernet", "TokenRing", "FDDI", "Infiniband", 
 559                     "Fibre Channel", "ISDN BRI Endpoint", 
 560                     "ISDN B Channel Endpoint", "ISDN D Channel Endpoint", 
 561                     // 22
 562                     "IPv4/v6", "BGP", "OSPF", "MPLS", "UDP", "TCP"},
 563                    ModelCorrespondence {
 564                     "CIM_ProtocolEndpoint.OtherTypeDescription"} ] 
 565               uint16 ProtocolType;
 566                   [MaxLen(64), Description (
 567                    "A string describing the type of ProtocolEndpoint when "
 568 karl  1.2          "the Type property of this class (or any of its "
 569                    "subclasses) is set to 1 (i.e., \"Other\"). This "
 570                    "property should be set to NULL when the Type property "
 571                    "is any value other than 1."),
 572           	   ModelCorrespondence {"CIM_ProtocolEndpoint.ProtocolType"} ]
 573              string OtherTypeDescription;
 574           };
 575           
 576           // ==================================================================
 577           //    ForwardsAmong
 578           // ==================================================================
 579                   [Association, Version ("2.6.0"), Description (
 580                    "This association represents the dependency that exists "
 581                    "between the ProtocolEndpoints that are used to forward data "
 582                    "and the ForwardingService that is performing the forwarding "
 583                    "of data.") ]
 584           class CIM_ForwardsAmong : CIM_ServiceSAPDependency {
 585                   [Override ("Antecedent"), Description(
 586                    "The ProtocolEndpoints that are used to forward the data") ] 
 587               CIM_ProtocolEndpoint REF Antecedent;
 588                   [Override ("Dependent"), Description(
 589 karl  1.2          "The service that is forwarding the data") ]
 590               CIM_ForwardingService REF Dependent;
 591           };
 592           
 593           // =================================================================== 
 594           //    PortImplementsEndpoint 
 595           // =================================================================== 
 596                   [Association, Version ("2.6.0"), Description ( 
 597                    "PortImplementsEndpoint associates a LogicalPort with one or " 
 598                    "more ProtocolEndpoints that are implemented on it. This "
 599                    "class specializes the DeviceSAPImplementation association. "
 600                    "It indicates that the referenced Endpoint is dependent on the "
 601                    "operations of the Port Device. (In the cases where Ports are "
 602                    "not currently defined for a protocol, for example for "
 603                    "Ethernet, an Endpoint could be associated directly with an "
 604                    "EthernetAdapter via the DeviceSAPImplementation "
 605                    "relationship.)") ] 
 606           class CIM_PortImplementsEndpoint : CIM_DeviceSAPImplementation { 
 607                 [Override ("Antecedent"), 
 608                  Description (
 609                   "The LogicalPort that represents the Device behind " 
 610 karl  1.2         "the ProtocolEndpoint.") ] 
 611              CIM_LogicalPort REF Antecedent; 
 612                 [Override ("Dependent"), 
 613                  Description (
 614                   "The ProtocolEndpoint implemented on the LogicalPort.") ] 
 615              CIM_ProtocolEndpoint REF Dependent; 
 616           }; 
 617           
 618           // ==================================================================
 619           //     LANEndpoint
 620           // ==================================================================
 621                   [Version ("2.6.0"), Description (
 622                    "A communication endpoint which, when its associated "
 623                    "interface device is connected to a LAN, may send and "
 624                    "receive data frames. LANEndpoints link switch ports and "
 625                    "host interfaces to LANs.") ]
 626           class CIM_LANEndpoint : CIM_ProtocolEndpoint {
 627                   [Description (
 628                    "A label or identifier for the LAN Segment."),
 629           	   ModelCorrespondence {"CIM_LANSegment.LANID"} ]
 630               string LANID;
 631 karl  1.2         [Description (
 632                    "An indication of the kind of technology used on the LAN."), 
 633                    ValueMap {"0", "1", "2", "3", "4"},
 634                    Values {"Unknown", "Other", "Ethernet", "TokenRing", "FDDI"},
 635                    ModelCorrespondence {"CIM_LANSegment.LANType"} ]
 636               uint16 LANType;
 637                   [Description (
 638                    "A free-form string that describes the type of technology "
 639                    "used on the LAN when the value of the LANType property "
 640                    "is equal to 1 (i.e., \"Other\"). This provides built-in "
 641                    "extensibility."),
 642                    ModelCorrespondence {"CIM_LANEndpoint.LANType"} ]
 643               string OtherLANType;
 644                   [MaxLen(12), Description (
 645                    "The principal unicast address used in communication "
 646                    "with the LANEndpoint. The MAC address is formatted as "
 647                    "twelve hexadecimal digits (e.g., \"010203040506\"), "
 648                    "with each pair representing one of the six octets "
 649                    "of the MAC address in \"canonical\" bit order "
 650                    "according to RFC 2469.") ]
 651               string MACAddress;
 652 karl  1.2         [Description (
 653                    "Other unicast addresses that may be used to communicate "
 654                    "with the LANEndpoint.") ]
 655               string AliasAddresses[];
 656                   [Description (
 657                    "Multicast addresses to which the LANEndpoint listens.") ]
 658               string GroupAddresses[];
 659                   [Description (
 660                    "The largest information field that may be sent or received "
 661                    "by the LANEndpoint."), Units ("Bits") ]
 662               uint32 MaxDataSize;
 663           };
 664           
 665           // ==================================================================
 666           //     LANSegment
 667           // ==================================================================
 668                   [Version ("2.6.0"), Description (
 669                    "A collection of LAN Endpoints of a particular type "
 670                    "that are able to intercommunicate directly without "
 671                    "the assistance of bridging or routing services.") ]
 672           class CIM_LANSegment : CIM_LogicalNetwork {
 673 karl  1.2         [MaxLen(64), Description (
 674                    "A label or identifier for the LAN Segment."),
 675           	   ModelCorrespondence {"CIM_LANEndpoint.LANID"} ]
 676               string LANID;
 677                   [Description (
 678                    "An indication of the kind of technology used on the LAN."), 
 679                    ValueMap {"0", "1", "2", "3", "4"},
 680                    Values {"Unknown", "Other", "Ethernet", "TokenRing", "FDDI"},
 681                    ModelCorrespondence {"CIM_LANEndpoint.LANType"} ]
 682               uint16 LANType;
 683                   [MaxLen(64), Description (
 684                    "A string describing the type of technology used on the LAN "
 685                    "when the value of the LANType property of this class (or "
 686                    "any of its subclasses) is set to 1 (i.e., \"Other\"). The "
 687                    "format of the string inserted in this property should be "
 688                    "similar in format to the values defined for the LANType "
 689                    "property. This property should be set to NULL when the "
 690                    "LANType property is any value other than 1."),
 691           	   ModelCorrespondence {"CIM_LANSegment.LANType"} ]
 692              string OtherLANType;
 693           };
 694 karl  1.2 
 695           // ==================================================================
 696           //    InLogicalNetwork
 697           // ==================================================================
 698                   [Association, Aggregation, Version ("2.6.0"), 
 699                    Description (
 700                    "This association defines a ProtocolEndpoint as a member of "
 701                    "a specific LogicalNetwork.") ]
 702           class CIM_InLogicalNetwork : CIM_CollectedMSEs {
 703                   [Override ("Collection"), Aggregate, Max (1),  
 704                    Description (
 705                    "The LogicalNetwork that groups the ProtocolEndpoint "
 706                    "instances.") ]
 707               CIM_LogicalNetwork REF Collection;
 708                   [Override ("Member"), Description (
 709                    "The child ProtocolEndpoints that are components of the "
 710                    "LogicalNetwork.") ]
 711               CIM_ProtocolEndpoint REF Member;
 712           };
 713           
 714           // ==================================================================
 715 karl  1.2 //    InSegment
 716           // ==================================================================
 717                   [Association, Aggregation, Version ("2.6.0"), 
 718                    Description (
 719                    "Defines a LANEndpoint as a member of a specific "
 720                    "LANSegment.") ]
 721           class CIM_InSegment : CIM_InLogicalNetwork {
 722                   [Override ("Collection"), Aggregate, Max (1), Description (
 723                    "The LANSegment that groups the LANEndpoint instances.") ]
 724               CIM_LANSegment REF Collection;
 725                   [Override ("Member"), Description (
 726                    "A child LANEndpoint that is a component of the "
 727                    "LANSegment.") ]
 728               CIM_LANEndpoint REF Member;
 729           };
 730           
 731           // ==================================================================
 732           //    ActiveConnection
 733           // ==================================================================
 734                   [Association, Version ("2.6.0"), Description (
 735                    "This association defines a connection that is currently "
 736 karl  1.2          "carrying traffic between two ProtocolEndpoints.") ] 
 737           class CIM_ActiveConnection : CIM_SAPSAPDependency {
 738                   [Override ("Antecedent"), Description (
 739                    "A ProtocolEndpoint in active communication with the "
 740                    "dependent ProtocolEndpoint.") ]
 741               CIM_ProtocolEndpoint REF Antecedent;
 742                   [Override ("Dependent"), Description (
 743                    "A second ProtocolEndpoint communicating with the "
 744                    "Antecedent ProtocolEndpoint.") ] 
 745               CIM_ProtocolEndpoint REF Dependent;
 746                   [Description ("The type of traffic that is carried "
 747                    "over this connection."),
 748                    ValueMap {"0", "1", "2", "3", "4", "5"},
 749                    Values {"Unknown", "Other", "Unicast", "Broadcast",
 750                     "Multicast", "Anycast"},
 751                    ModelCorrespondence {
 752                     "CIM_ActiveConnection.OtherTrafficDescription"} ]
 753               uint16 TrafficType;
 754                   [MaxLen(64), Description (
 755                    "A string describing the type of traffic that is being "
 756                    "carried over this instance when its Type property is set "
 757 karl  1.2          "to 1 (i.e., \"Other\"). The format of the string inserted "
 758                    "in this property should be similar in format to the "
 759                    "values defined for the TrafficType property. This "
 760                    "property should be set to NULL when the TrafficType "
 761                    "property is any value other than 1."),
 762                    ModelCorrespondence {
 763                     "CIM_ActiveConnection.TrafficType"} ]
 764               string OtherTrafficDescription;
 765                   [Description (
 766                    "TRUE means that this connection is uni-directional; FALSE "
 767                    "means that this connection is bi-directional.") ]
 768               boolean IsUnidirectional;
 769           };
 770           
 771           // ==================================================================
 772           //     IPAddressRange
 773           // ==================================================================
 774                   [Abstract, Version ("2.6.0"), Description (
 775                    "This represents a grouping of specific addresses, and "
 776                    "provides additional semantics for this group if "
 777                    "appropriate.") ]
 778 karl  1.2 class CIM_IPAddressRange : CIM_CollectionOfMSEs {
 779                   [Description (
 780                    "The starting IP address of the AddressRange, formatted "
 781                    "according to the appropriate convention as defined in the "
 782                    "AddressType property of this class (e.g., 171.79.6.40).") ] 
 783               string StartAddress;
 784                   [Description (
 785                    "The ending IP address of the AddressRange, formatted "
 786                    "according to the appropriate convention as defined in the "
 787                    "AddressType property of this class (e.g., 171.79.6.40).") ] 
 788               string EndAddress;
 789                   [Description (
 790                    "An enumeration that defines how to format the address and "
 791                    "mask of the address range that defines this IPSubnet)." 
 792                    "\n\n"
 793                    "Whenever possible, IPv4-compatible addresses should "
 794                    "be used instead of IPv6 addresses (see RFC 2373, "
 795                    "section 2.5.4). In order to have a consistent format "
 796                    "for IPv4 addresses in a mixed IPv4/v6 environment, all "
 797                    "IPv4 addresses and both IPv4-compatible IPv6 addresses "
 798                    "and IPv4-mapped IPv6 addresses, per RFC 2373, section "
 799 karl  1.2          "2.5.4, should be formatted in standard IPv4 format."),
 800                    ValueMap {"0", "1", "2"},
 801                    Values {"Unknown", "IPv4", "IPv6"} ]
 802               uint16 TypeOfAddress;
 803                   [Description (
 804                    "This attribute defines the region that addresses can be "
 805                    "allocated to."),
 806                    ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8"},
 807                    Values {"Unknown",
 808                     "Multiregional: 192.0.0.0 to 193.255.255.255",
 809                     "Europe: 194.0.0.0 to 195.255.255.255",
 810                     "Others: 196.0.0.0 to 197.255.255.255",
 811                     "North America: 198.0.0.0 to 199.255.255.255",
 812                     "Central & South America: 200.0.0.0 to 201.255.255.255",
 813                     "Pacific Rim: 202.0.0.0 to 203.255.255.255",
 814                     "Others: 204.0.0.0 to 205.255.255.255",
 815                     "Others: 206.0.0.0 to 207.255.255.255"} ]
 816               uint16 AllocationRegion;
 817           };
 818           
 819           // ==================================================================
 820 karl  1.2 //     IPProtocolEndpoint
 821           // ==================================================================
 822                   [Version ("2.6.0"), Description (
 823                    "A ProtocolEndpoint that is dedicated to running IP.") ]
 824           class CIM_IPProtocolEndpoint : CIM_ProtocolEndpoint {
 825                   [Description (
 826                    "The IP address that this ProtocolEndpoint represents, "
 827                    "formatted according to the appropriate convention as "
 828                    "defined in the AddressType property of this class " 
 829                    "(e.g., 171.79.6.40).") ] 
 830               string Address;
 831                   [Description (
 832                    "The mask for the IP address of this ProtocolEndpoint, "
 833                    "formatted according to the appropriate convention as "
 834                    "defined in the AddressType property of this class " 
 835                    "(e.g., 255.255.252.0).") ] 
 836               string SubnetMask;
 837                   [Description (
 838                    "An enumeration that describes the format of the address "
 839                    "property. Whenever possible, IPv4-compatible addresses "
 840                    "should be used instead of native IPv6 addresses (see "
 841 karl  1.2          "RFC 2373, section 2.5.4). In order to have a consistent "
 842                    "format for IPv4 addresses in a mixed IPv4/v6 environment, "
 843                    "all IPv4 addresses and both IPv4-compatible IPv6 addresses "
 844                    "and IPv4-mapped IPv6 addresses, per RFC 2373, section "
 845                    "2.5.4, should be formatted in standard IPv4 format."),
 846                    ValueMap {"0", "1", "2"},
 847                    Values {"Unknown", "IPv4", "IPv6"} ]
 848               uint16 AddressType;
 849                   [Description (
 850                    "It is not possible to tell from the address alone if a "
 851                    "given IPProtocolEndpoint can support IPv4 and IPv6, or "
 852                    "just one of these. This property explicitly defines the "
 853                    "support for different versions of IP that this "
 854                    "IPProtocolEndpoint has."),
 855                    ValueMap {"0", "1", "2"},
 856                    Values {"Unknown", "IPv4 Only", "IPv6 Only"} ]
 857               uint16 IPVersionSupport;
 858           };
 859           
 860           // ==================================================================
 861           //     BGPProtocolEndpoint
 862 karl  1.2 // ==================================================================
 863                   [Version ("2.6.0"), Description (
 864                    "A ProtocolEndpoint that is dedicated to running BGP.") ]
 865           class CIM_BGPProtocolEndpoint : CIM_ProtocolEndpoint {
 866                   [Description (
 867                    "A boolean that, when TRUE, signifies that this is an "
 868                    "instance of the external version of BGP (FALSE is the "
 869                    "internal version).") ]
 870               boolean IsEBGP;
 871                   [Description (
 872                    "Normally, two routers running EBGP must be physically "
 873                    "connected. This boolean, when TRUE, denotes a LOGICAL "
 874                    "connection between two routers that are running EBGP " 
 875                    "(e.g., there is an intermediate router or interface "
 876                    "between them.") ] 
 877               boolean IsEBGPMultihop;
 878                   [Description (
 879                    "This is the unique identifier of the local BGP router. "
 880                    "This is often the router ID (e.g., an IP address)."),
 881                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpIdentifier"} ]
 882               string LocalIdentifier;
 883 karl  1.2         [Description (
 884                    "This is the unique identifier of the peer BGP router. "
 885                    "This is often the router ID (e.g., an IP address)."),
 886                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpPeerIdentifier"} ]
 887               string PeerIdentifier;
 888                   [Description (
 889                    "This defines the current connection state of the "
 890                    "BGP Peer."),
 891                    ValueMap {"1", "2", "3", "4", "5", "6"},
 892                    Values {"Idle", "Connect", "Active", "OpenSet",
 893                     "OpenConfirm", "Established"},
 894                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpPeerState"} ]
 895               uint16 State;
 896                   [Description (
 897                    "This defines the desired state of the BGP connection."),
 898                    ValueMap {"1", "2"},
 899                    Values {"Stop", "Start"},
 900                    Mappingstrings {
 901                     "MIB.IETF|RFC1657-MIB.bgpPeerAdminStatus"} ]
 902               uint16 AdminStatus;
 903                   [Description (
 904 karl  1.2          "This defines the negotiated version of BGP that is "
 905                    "running between the two peers."),
 906                    Mappingstrings {
 907                    "MIB.IETF|RFC1657- MIB.bgpPeerNegotiatedVersion"} ]
 908               string NegotiatedVersion;
 909                   [Description (
 910                    "This is the local IP address of this router's BGP "
 911                    "connection."),
 912                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpPeerLocalAddr"} ]
 913               string LocalAddress; 
 914                   [Description (
 915                    "This is the local port number for the TCP connection of "
 916                    "this router's BGP connection."),
 917                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpPeerLocalPort"} ]
 918               uint16 LocalPort; 
 919                   [Description (
 920                    "This is the remote IP address of this router's BGP "
 921                    "connection."),
 922                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpPeerRemoteAddr"} ]
 923               string RemoteAddress;
 924                   [Description (
 925 karl  1.2          "This is the remote port number for the TCP connection of "
 926                    "this router's BGP connection."),
 927                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpPeerRemotePort"} ]
 928               uint16 RemotePort; 
 929                   [Description (
 930                    "This is the remote AS number for this router's BGP "
 931                    "connection."),
 932                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpPeerRemoteAs"} ]
 933               uint16 RemoteAS;
 934                   [Description (
 935                    "This defines the maximum amount of time in seconds that "
 936                    "may elapse between the receipt of successive KEEPALIVE or "
 937                    "UPDATE messages. This is instrumented as a counter that "
 938                    "increments from zero to the value specified in this "
 939                    "property. The value of this property is calculated by "
 940                    "this BGP speaker by using the smaller of the values of "
 941                    "bgpPeerHoldTimeConfigured and the Hold Time received in "
 942                    "the OPEN message. This value, if not zero seconds, must "
 943                    "be at least three seconds, up to a maximum of 65535 "
 944                    "seconds. Receipt of either a KEEPALIVE or an UPDATE "
 945                    "message resets this value."),
 946 karl  1.2          Units ("Seconds"),
 947                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpPeerHoldTime"} ]
 948               uint16 HoldTime;
 949                   [Description (
 950                    "This defines the time interval in seconds for the KeepAlive "
 951                    "timer established with the peer. The value of this property "
 952                    "is calculated by this speaker such that, when compared with "
 953                    "the HoldTime property, it has the same proportion as the "
 954                    "KeepAliveConfigured property has with the "
 955                    "HoldTimeConfigured property. A value of 0 indicates that "
 956                    "the KeepAlive timer has not yet been established. The "
 957                    "maximum value of this property is 21845 seconds."),
 958                    Units ("Seconds"),
 959                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpPeerKeepAlive"} ]
 960               uint16 KeepAlive;
 961           };
 962           
 963           // ==================================================================
 964           //    IPXProtocolEndpoint
 965           // ==================================================================
 966                   [Version ("2.6.0"), Description (
 967 karl  1.2          "An IPX communication point from which data may be sent "
 968                    "or received.") ]
 969           class CIM_IPXProtocolEndpoint : CIM_ProtocolEndpoint {
 970                   [Description (
 971                    "An IPX address formatted as eight hexadecimal digits "
 972                    "representing the network number, followed by a colon, "
 973                    "followed by twelve hexadecimal digits representing the "
 974                    "host address (e.g. \"00112233:010203040506\").") ]
 975               string Address;
 976           };
 977           
 978           // ==================================================================
 979           //    IPXNetwork
 980           // ==================================================================
 981                   [Version ("2.6.0"), Description (
 982                    "A network or subnet that uses the IPX protocol.") ]
 983           class CIM_IPXNetwork : CIM_LogicalNetwork {
 984                   [Description (
 985                    "An IPX network number formatted as eight hexadecimal "
 986                    "digits (e.g., \"00112233\").") ]
 987               string NetworkNumber;
 988 karl  1.2 };
 989           
 990           // ================================================================== 
 991           //     NextHopRouting
 992           // ==================================================================
 993                   [Abstract, Version ("2.6.0"), Description (
 994                    "NextHopRouting relates a destination address to the "
 995                    "address or interface through which the remote address "
 996                    "may be reached.  An instance of this class can represent "
 997                    "either static or dynamic routing, and may represent a routing "
 998                    "table entry (but it is not required that all NextHopRoutes be "
 999                    "in a routing table).  Static routes are distinguished by "
1000                    "setting the IsStatic boolean property to TRUE. \n"
1001                    "\n"
1002                    "Subclasses of NextHopRouting provide specific protocol "
1003                    "and Key information. For example, the IPRoute subclass "
1004                    "contains an AddressType property as part of its key "
1005                    "structure. This property is not required for next hop "
1006                    "information defined for Infiniband. \n"
1007                    "\n"
1008                    "NextHopRoutes are dependent on at least one "
1009 karl  1.2          "ForwardingService to execute them. This is conveyed by the "
1010                    "CIM_NextHopForwardedByService association.") ]
1011           class CIM_NextHopRouting : CIM_LogicalElement {
1012                   [Description (
1013                    "The address which serves as the destination to be "
1014                    "reached.") ]
1015               string DestinationAddress;
1016                   [Description (
1017                    "The mask for the DestinationAddress.") ]
1018               string DestinationMask;
1019                   [Description (
1020                    "This contains either the address of the next-hop router, "
1021                    "or the interface used to reach the destination.") ]
1022               string NextHop;
1023                   [Description (
1024                    "TRUE indicates that this is a static route, and FALSE "
1025                    "indicates a dynamically-learned route.") ]
1026               boolean IsStatic;
1027           };
1028           
1029           // ==================================================================
1030 karl  1.2 //    RouteForwardedByService
1031           // ==================================================================
1032                   [Association, Version ("2.6.0"), Description (
1033                    "This assocation makes explicit the next hops that are "
1034                    "forwarded by a specific ForwardingService, to reach the "
1035                    "destination. Every ForwardingService can have its own "
1036                    "unique set of routing destinations and next hops.") ]
1037           class CIM_RouteForwardedByService : CIM_Dependency {
1038                   [Override ("Antecedent"), Min (1) ]
1039               CIM_ForwardingService REF Antecedent;
1040                   [Override ("Dependent") ]
1041               CIM_NextHopRouting REF Dependent;
1042                   [Description (
1043                    "This property contains the current administrative distance "
1044                    "of this route, for the ForwardingService. Note that this "
1045                    "property indicates current, specific values - whereas an "
1046                    "instance of the CIM_AdministrativeDistance class "
1047                    "defines default distances.") ]
1048               uint16 AdminDistance;
1049                   [Description (
1050                    "PathMetric provides a numeric indication as to the "
1051 karl  1.2          "preference of this route compared to other routes that "
1052                    "reach the same destination.") ]
1053               uint16 PathMetric;
1054           };
1055           
1056           // ==================================================================
1057           //     IPRoute
1058           // ==================================================================
1059                   [Abstract, Version ("2.6.0"), Description (
1060                    "An IPRoute relates a destination address to the "
1061                    "address or interface through which the remote address "
1062                    "may be reached. The destination address may be a "
1063                    "specific IP endpoint or a subnet, dependent on the mask. "
1064                    "An instance of this class represents either static or "
1065                    "dynamic routing. Static routes are distinguished by "
1066                    "setting the IsStatic boolean property to TRUE. \n"
1067                    "\n"
1068                    "Since many routes between endpoints can "
1069                    "be defined (using different route calculation algorithms), "
1070                    "the CIM_IPRoute class is defined as Abstract.  This "
1071                    "forces subclassing (for example, see CIM_BGPIPRoute) "
1072 karl  1.2          "and allows the instances of its subclasses to be "
1073                    "distinguished based on their CreationClassName key "
1074                    "property.") ]
1075           class CIM_IPRoute : CIM_NextHopRouting {
1076                   [Propagated("CIM_ForwardingService.SystemCreationClassName"), 
1077                    Key, MaxLen (256), Description (
1078                     "The scoping ForwardingService's SystemCreationClassName.") ]
1079               string SystemCreationClassName;
1080                   [Propagated("CIM_ForwardingService.SystemName"), Key, MaxLen (256),
1081                    Description (
1082                     "The scoping ForwardingService's SystemName.") ]
1083               string SystemName;
1084                   [Propagated("CIM_ForwardingService.CreationClassName"), 
1085                    Key, MaxLen (256), Description (
1086                     "The scoping ForwardingService's CreationClassName.") ]
1087               string ServiceCreationClassName;
1088                   [Propagated("CIM_ForwardingService.Name"), Key, MaxLen (256),
1089                    Description (
1090                     "The scoping ForwardingService's Name.") ]
1091               string ServiceName;
1092                   [Key, MaxLen (256), Description (
1093 karl  1.2          "CreationClassName indicates the name of the class or the "
1094                    "subclass used in the creation of an instance. When used "
1095                    "with the other key properties of this class, this property "
1096                    "allows all instances of this class and its subclasses to "
1097                    "be uniquely identified.") ]
1098               string CreationClassName;
1099                   [Key, Description (
1100                    "The IP address which serves as the destination of the "
1101                    "traffic, formatted according to the appropriate convention "
1102                    "as defined in the AddressType property of this class. \n"
1103                    "\n"
1104                    "This property has the same semantics as DestinationAddress "
1105                    "inherited from the NextHopRouting superclass, but a different "
1106                    "property name. This is because this property and class were "
1107                    "defined before NextHopRouting and are Key properties. They "
1108                    "cannot be removed. ModelCorrespondence indicates that they "
1109                    "should be set to equivalent values for consistency and "
1110                    "ease of query."), 
1111                    ModelCorrespondence {"CIM_IPRoute.DestinationAddress"} ] 
1112               string IPDestinationAddress;
1113                   [Key, Description (
1114 karl  1.2          "The mask for the destination IP address, formatted "
1115                    "according to the appropriate convention as defined in the "
1116                    "AddressType property of this class. \n"
1117                    "\n"
1118                    "This property has the same semantics as DestinationMask "
1119                    "inherited from the NextHopRouting superclass, but a different "
1120                    "property name. This is because this property and class were "
1121                    "defined before NextHopRouting and are Key properties. They "
1122                    "cannot be removed. ModelCorrespondence indicates that they "
1123                    "should be set to equivalent values for consistency and "
1124                    "ease of query."), 
1125                    ModelCorrespondence {"CIM_IPRoute.DestinationMask"} ] 
1126               string IPDestinationMask;
1127                   [Key, Description (
1128                    "An enumeration that describes the format of the address "
1129                    "property. Addresses that can be formatted in IPv4 format, "
1130                    "must be formatted that way to ensure mixed IPv4/IPv6 "
1131                    "support. "
1132                    "\n\n"
1133                    "AddressType is part of the key so that an IPv4 and an IPv6 "
1134                    "route to IP subnets with the same network number but "
1135 karl  1.2          "different versions (v4/v6) can coexist "),
1136                    ValueMap {"0", "1", "2"},
1137                    Values {"Unknown", "IPv4", "IPv6"} ]
1138               uint16 AddressType;
1139                   [Override ("DestinationAddress"),
1140                    ModelCorrespondence {"CIM_IPRoute.IPDestinationAddress"} ]
1141               string DestinationAddress;
1142                   [Override ("DestinationMask"),
1143                    ModelCorrespondence {"CIM_IPRoute.IPDestinationMask"} ]
1144               string DestinationMask;
1145           };
1146            
1147           // ==================================================================
1148           //    ForwardedRoutes
1149           // ==================================================================
1150                   [Association, Version ("2.6.0"), Description (
1151                    "This assocation makes explicit the IP routes that are "
1152                    "defined in the context of a specific ForwardingService. "
1153                    "Every ForwardingService can have its own unique set of IP "
1154                    "routing destinations.") ]
1155           class CIM_ForwardedRoutes : CIM_RouteForwardedByService {
1156 karl  1.2         [Override ("Antecedent"), Min (1), Max (1) ]
1157               CIM_ForwardingService REF Antecedent;
1158                   [Override ("Dependent"), Weak ]
1159               CIM_IPRoute REF Dependent;
1160           };
1161           
1162           // ==================================================================
1163           //    BindsTo
1164           // ==================================================================
1165                   [Association, Version ("2.6.0"), Description (
1166                    "This association establishes a ServiceAccessPoint "
1167                    "as a requestor of protocol services from a "
1168                    "ProtocolEndpoint. Typically, this association runs "
1169                    "between SAPs and endpoints on a single system. Since a "
1170                    "ProtocolEndpoint is a kind of ServiceAccessPoint, this "
1171                    "binding can be used to establish a layering of two "
1172                    "protocols, the upper layer represented by the Dependent "
1173                    "and the lower layer represented by the Antecedent.") ]
1174           class CIM_BindsTo : CIM_SAPSAPDependency {
1175                   [Override ("Antecedent") ]
1176               CIM_ProtocolEndpoint REF Antecedent;
1177 karl  1.2         [Override ("Dependent") ]
1178               CIM_ServiceAccessPoint REF Dependent;
1179           };
1180           
1181           // ==================================================================
1182           //    BindsToLANEndpoint
1183           // ==================================================================
1184                   [Association, Version ("2.6.0"), Description (
1185                    "This association makes explicit the dependency of a "
1186                    "ProtocolEndpoint on some lower layer ProtocolEndpoint on "
1187                    "the same system.") ]
1188           class CIM_BindsToLANEndpoint : CIM_BindsTo {
1189                   [Override ("Antecedent") ]
1190               CIM_LANEndpoint REF Antecedent;
1191                   [Description (
1192                    "This describes the framing method for the upper layer "
1193                    "protocol endpoint that is bound to a LANEndpoint. Note: "
1194                    "\"Raw802.3\" is only known to be used with the IPX "
1195                    "protocol."),
1196                    ValueMap {"0", "1", "2", "3", "4"},
1197                    Values {"Unknown", "Ethernet", "802.2", "SNAP", "Raw802.3"} ]
1198 karl  1.2     uint16 FrameType;
1199           };
1200           
1201           // ==================================================================
1202           //     BGPIPRoute
1203           // ==================================================================
1204                   [Version ("2.6.0"), Description (
1205                    "BGPIPRoute describes a BGP routing entry that connects two "
1206                    "peer routers that are running BGP. The source and "
1207                    "destination addresses may be either specific IP endpoints "
1208                    "or IP subnets.") ]
1209           class CIM_BGPIPRoute : CIM_IPRoute {
1210                   [Description (
1211                    "Usually, the administrative distance is used to determine "
1212                    "which route gets installed in the routing table. Using this "
1213                    "scheme, routes learned via EBGP will win over routes "
1214                    "learned via an IGP. If this is not desired, then this "
1215                    "assigns the administrative distance of this route to be "
1216                    "equal to that of a local route, which means that the same "
1217                    "route learned by an IGP will have a lower administrative "
1218                    "distance and be installed instead.") ]
1219 karl  1.2     boolean IsBackDoorRoute;
1220                   [Description (
1221                    "Loopback interfaces are often used by IBGP peers, because "
1222                    "they eliminate a dependency that would otherwise occur if "
1223                    "the actual IP address of a physical interface was used to "
1224                    "configure BGP. The loopback interface instead instructs the "
1225                    "router to use any available interface.") ]
1226               boolean UsesLoopbackPeering;
1227           };
1228           
1229           // ==================================================================
1230           //    RoutesBGP
1231           // ==================================================================
1232                   [Association, Version ("2.6.0"), Description (
1233                    "This association defines a BGP route, and makes explicit "
1234                    "the dependency between a BGPIPRoute and a "
1235                    "BGPProtocolEndpoint.") ]
1236           class CIM_RoutesBGP : CIM_Dependency {
1237                   [Override ("Antecedent"), Max (2), Description (
1238                    "The BGPProtocolEndpoints that represent the source and "
1239                    "destination (or at least the next hop) of the BGP route.") ]
1240 karl  1.2     CIM_BGPProtocolEndpoint REF Antecedent;
1241                   [Override ("Dependent"), Min (1), Description (
1242                    "The routing table entry that represents a BGP route.") ]
1243               CIM_BGPIPRoute REF Dependent;
1244           };
1245           
1246           // ==================================================================
1247           //     NetworksInAdminDomain
1248           // ==================================================================
1249                   [Association, Version ("2.6.0"), Description (
1250                    "This association is used to define the set of Logical"
1251                    "Networks contained in an AdminDomain. This has the implied "
1252                    "semantics that this set of LogicalNetworks are all "
1253                    "administered by the same network admin that "
1254                    "administrates the domain.") ]
1255           class CIM_NetworksInAdminDomain {
1256                   [Key, Min (1), Max (1), Description (
1257                    "The AdminDomain that hosts the various LogicalNetworks.") ] 
1258               CIM_AdminDomain REF Domain;
1259                   [Weak, Key, Description (
1260                    "The LogicalNetworks that are hosted by the AdminDomain.") ] 
1261 karl  1.2     CIM_LogicalNetwork REF Network;
1262           };
1263           
1264           // ==================================================================
1265           //     BGPCluster
1266           // ==================================================================
1267                   [Version ("2.6.0"), Description (
1268                    "The BGP speakers in an AS are required to be fully meshed. "
1269                    "This can lead to a huge number of TCP connections per "
1270                    "router. One way to reduce the peering requirements is to "
1271                    "use a route reflector. This is based on specifying one or "
1272                    "more routers to act as focal points for IBGP sessions. "
1273                    "\n\n"
1274                    "The route reflector as a whole is called a cluster. It is "
1275                    "logically divided into three types of routers: reflectors, "
1276                    "clients of the route reflector(s), and non-clients of the "
1277                    "route reflector. "
1278                    "\n\n"
1279                    "An AS can have more than one route reflector. There can be "
1280                    "more than one route reflector in a cluster, and there can "
1281                    "be more than one cluster in an AS.") ]
1282 karl  1.2 class CIM_BGPCluster : CIM_CollectionOfMSEs {
1283                   [Key, Description (
1284                    "If a cluster has more than one route reflector, all of the "
1285                    "route reflectors in the cluster need to be configured with "
1286                    "a 4-byte cluster ID. This allows route reflectors to "
1287                    "recognize updates from other route reflectors in the "
1288                    "same cluster.") ] 
1289               uint32 ClusterID;
1290           };
1291           
1292           // ==================================================================
1293           //     RoutersInBGPCluster
1294           // ==================================================================
1295                   [Association, Aggregation, Version ("2.6.0"), 
1296                    Description (
1297                    "This aggregation establishes 'whole-part' relationships "
1298                    "between a BGPCluster and the ComputerSystems (e.g., the "
1299                    "routers) that it contains. At least three routers are "
1300                    "required to form a cluster - a reflector and two clients. "
1301                    "In addition, the routers that form a cluster share common "
1302                    "configuration information, and are commonly administered.") ]
1303 karl  1.2 class CIM_RoutersInBGPCluster : CIM_CollectedMSEs {
1304                   [Override ("Collection"), Aggregate, Max (1), 
1305                    Description (
1306                    "The Cluster that aggregates the routers belonging to it "
1307                    "and administers them.") ]
1308               CIM_BGPCluster REF Collection;
1309                   [Override ("Member"), Min (3), Description (
1310                    "The routers that form the Cluster.") ] 
1311               CIM_ComputerSystem REF Member;
1312           };
1313           
1314           // ==================================================================
1315           //     BGPClustersInAS
1316           // ==================================================================
1317                   [Association, Aggregation, Version ("2.6.0"), 
1318                    Description (
1319                    "This aggregation establishes 'whole-part' relationships "
1320                    "between an AutonomousSystem and the BGPClusters that it "
1321                    "contains. In addition, the routers that form a cluster share "
1322                    "common configuration information, and are commonly "
1323                    "administered.") ]
1324 karl  1.2 class CIM_BGPClustersInAS {
1325                   [Key, Aggregate, Max (1), Description (
1326                    "The AutonomousSystem that aggregates the Clusters belonging "
1327                    "to it and administers them.") ]
1328               CIM_AutonomousSystem REF GroupAS;
1329                   [Key, Description (
1330                    "The Clusters that are contained in the AS.") ] 
1331               CIM_BGPCluster REF PartAS;
1332           };
1333           
1334           // ==================================================================
1335           //     RoutersInAS
1336           // ==================================================================
1337                   [Association, Aggregation, Version ("2.6.0"), 
1338                    Description (
1339                    "This aggregation establishes 'whole-part' relationships "
1340                    "between an AutonomousSystem and the routers that it "
1341                    "contains. In addition, the routers in the AS share common "
1342                    "configuration information, and are commonly administered.") ]
1343           class CIM_RoutersInAS : CIM_SystemComponent {
1344                   [Override ("GroupComponent"), Aggregate, Max (1), Description (
1345 karl  1.2          "The AutonomousSystem that aggregates the routers belonging "
1346                    "to it and administers them.") ]
1347               CIM_AutonomousSystem REF GroupComponent;
1348                   [Override ("PartComponent"), Description (
1349                    "The Routers that are contained in the AS.") ] 
1350               CIM_ComputerSystem REF PartComponent;
1351                   [Description (
1352                    "This is an array of strings that contain the BGP attributes "
1353                    "supported by this router.") ]
1354               string BGPSupportedAttributes[];
1355                   [Description (
1356                    "TRUE means that the community value of this router is added "
1357                    "to the existing community value, and FALSE means that the "
1358                    "community value of this router replaces the existing "
1359                    "community value.") ]
1360               boolean AddCommunityValue;
1361                   [Description (
1362                    "This is an enumeration that defines the function, from the "
1363                    "point of view of BGP, of this router."),
1364                    ValueMap {"0", "1", "2", "3", "4", "5", "6", "7"},
1365                    Values {"Unknown", "Other", "Conventional BGP Speaker",
1366 karl  1.2           "Route Reflector", "Router Reflector Client",
1367                     "Route Reflector Non-Client", "Peer Group Member",
1368                     "Confederation Member"},
1369                    ModelCorrespondence {
1370                     "CIM_BGPService.OtherRoleDescription"} ]
1371               uint16 Role;
1372                   [MaxLen(64), Description (
1373                    "A string describing the type of function that this router "
1374                    "has in its AS when the value of the Role property of this "
1375                    "class is set to 1 (i.e., \"Other\"). The format of the string "
1376                    "inserted in this property should be similar in format to "
1377                    "the values defined for the Role property. This property "
1378                    "should be set to NULL when the Role property is any value "
1379                    "other than 1."),
1380                    ModelCorrespondence {"CIM_BGPService.Role"} ]
1381              string OtherRoleDescription;
1382           };
1383           
1384           // ==================================================================
1385           //    ProvidesEndpoint
1386           // ==================================================================
1387 karl  1.2         [Association, Version ("2.6.0"), Description (
1388                    "This association represents the endpoints that a network "
1389                    "service provides to access it.") ]
1390           class CIM_ProvidesEndpoint : CIM_ServiceAccessBySAP {
1391                   [Override ("Antecedent"), Max (1), Description (
1392                    "The NetworkService that is being accessed by the "
1393                    "ProtocolEndpoints.") ]
1394               CIM_NetworkService REF Antecedent;
1395                   [Override ("Dependent"), Description (
1396                    "The ProtocolEndpoints that provide access to the "
1397                    "NetworkService.") ] 
1398               CIM_ProtocolEndpoint REF Dependent;
1399           };
1400           
1401           // ==================================================================
1402           //     ASBGPEndpoints
1403           // ==================================================================
1404                   [Association, Aggregation, Version ("2.6.0"), 
1405                    Description (
1406                    "This aggregation defines the different router interfaces "
1407                    "that are running BGP in the AutonomousSystem.") ]
1408 karl  1.2 class CIM_ASBGPEndpoints : CIM_SystemComponent {
1409                   [Override ("GroupComponent"), Aggregate, Max (1), Description (
1410                    "The AutonomousSystem that aggregates the router interfaces "
1411                    "that are running BGP.") ]
1412               CIM_AutonomousSystem REF GroupComponent;
1413                   [Override ("PartComponent"), Description (
1414                    "The router interfaces that are contained in the AS.") ] 
1415               CIM_BGPProtocolEndpoint REF PartComponent;
1416           };
1417           
1418           // ==================================================================
1419           //     Confederation
1420           // ==================================================================
1421                   [Association, Aggregation, Version ("2.6.0"), 
1422                    Description (
1423                    "The BGP speakers in an AS are required to be fully meshed. "
1424                    "This can lead to a huge number of TCP connections per "
1425                    "router. One way to reduce the peering requirements is to "
1426                    "use a confederation. A confederation effectively partitions "
1427                    "one AS into a group of 'sub-ASs'. This enables all of the "
1428                    "benefits of IBGP to be applied inside the confederation, "
1429 karl  1.2          "while enabling EBGP to be run between each confederation. "
1430                    "This enables certain BGP attribute values to be preserved "
1431                    "between confederations. However, to the outside world, the "
1432                    "AS with its confederations appear to be a single AS.") ]
1433           class CIM_Confederation : CIM_SystemComponent {
1434                   [Override ("GroupComponent"), Aggregate, Max (1), 
1435                    Description (
1436                    "The AutonomousSystem that contains the confederations.") ]
1437               CIM_AutonomousSystem REF GroupComponent;
1438                   [Override ("PartComponent"), Description (
1439                    "The Confederation within the AutonomousSystem.") ]
1440               CIM_AutonomousSystem REF PartComponent;
1441                   [Description (
1442                    "A unique identifier of the AutonomousSystem that contains "
1443                    "the confederations.") ]
1444               uint32 ParentASNumber;
1445                   [Description (
1446                    "A unique identifier of the Confederation within the "
1447                    "AutonomousSystem.") ]
1448               uint32 ChildASNumber;
1449           };
1450 karl  1.2 
1451           // ==================================================================
1452           //     RouteCalculationService
1453           // ==================================================================
1454                   [Abstract, Version ("2.6.0"), Description (
1455                    "This is an abstract base class, derived from Network"
1456                    "Service, that represents the route calculation aspects of "
1457                    "a router. This class also addresses functions performed by "
1458                    "the router when it exchanges routing information. "
1459                    "\n\n"
1460                    "Note that there are a large variety of additional routing "
1461                    "protocols that are not enumerated below, or currently "
1462                    "subclassed. These will be added as models are developed.") ]
1463           class CIM_RouteCalculationService : CIM_NetworkService {
1464                   [Description (
1465                    "The RouterID uniquely identifies the router that is "
1466                    "performing the route calculation. It is the highest IP "
1467                    "address on the router (or the highest loopback interface, "
1468                    "if there is one).") ] 
1469               string RouterID;
1470                   [Description (
1471 karl  1.2          "This is an enumerated value that defines the routing "
1472                    "algorithm used in this route calculation."),
1473                    ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8"},
1474                    Values {"Unknown", "RIPv1", "RIPv2", "OSPFv1", "OSPFv2",
1475                     "BGPv1", "BGPv2", "BGPv3", "BGPv4"} ]
1476               uint16 AlgorithmType;
1477           };
1478           
1479           // ==================================================================
1480           //    CalculatedRoutes
1481           // ==================================================================
1482                   [Association, Version ("2.6.0"), Description (
1483                    "This assocation makes explicit the routes that are "
1484                    "calculated by a specific RouteCalculationService. Thus, "
1485                    "every RouteCalculationService can have its own unique set "
1486                    "of calculated routes.") ]
1487           class CIM_CalculatedRoutes : CIM_Dependency {
1488                   [Override ("Antecedent"), Max (1) ]
1489               CIM_RouteCalculationService REF Antecedent;
1490                   [Override ("Dependent") ]
1491               CIM_IPRoute REF Dependent;
1492 karl  1.2 };
1493           
1494           // ==================================================================
1495           //    HostedRoutingServices
1496           // ==================================================================
1497                   [Association, Version ("2.6.0"), Description (
1498                    "This is a specialization of CIM_HostedService, which is an"
1499                    "association between a Service and the System on which the "
1500                    "functionality resides. The ComputerSystem is made up of "
1501                    "different routing services, which take the form of internal "
1502                    "and external routing protocols. These are different "
1503                    "NetworkServices, and are weak with respect to their hosting "
1504                    "ComputerSystem.") ] 
1505           class CIM_HostedRoutingServices : CIM_HostedService {
1506                   [Override ("Antecedent"), Min (1), Max (1), 
1507           	   Description ("The hosting router.") ]
1508               CIM_ComputerSystem REF Antecedent;
1509                   [Override ("Dependent"), Description (
1510                    "The Service hosted on the System.") ]
1511               CIM_RouteCalculationService REF Dependent;
1512           };
1513 karl  1.2 
1514           // ==================================================================
1515           //    HostedForwardingServices
1516           // ==================================================================
1517                   [Association, Version ("2.6.0"), Description (
1518                    "This is a specialization of CIM_HostedService, which is an"
1519                    "association between a Service and the System on which the "
1520                    "functionality resides. The ComputerSystem is made up of "
1521                    "different forwarding services, which take the form of "
1522                    "internal and external routing protocols. These are "
1523                    "different NetworkServices, and are weak with respect to "
1524                    "their hosting ComputerSystem.") ] 
1525           class CIM_HostedForwardingServices : CIM_HostedService {
1526                   [Override ("Antecedent"), Min(1), Max (1),
1527           	   Description ("The hosting router.") ]
1528               CIM_ComputerSystem REF Antecedent;
1529                   [Override ("Dependent"), Description (
1530                    "The Service hosted on the System.") ]
1531               CIM_ForwardingService REF Dependent;
1532           };
1533           
1534 karl  1.2 // ==================================================================
1535           //    EGPRouteCalcDependency
1536           // ==================================================================
1537                   [Association, Version ("2.6.0"), Description (
1538                    "This is a specialization of ServiceServiceDependency, and "
1539                    "captures the dependency that external gateway protocols " 
1540                    "(such as BGP) have on interior gateway protocols (such "
1541                    "as OSPF).") ] 
1542           class CIM_EGPRouteCalcDependency : CIM_ServiceServiceDependency {
1543                   [Override ("Antecedent"), Description (
1544                    "The independent RouteCalculationService that provides "
1545                    "routing information from the AS, for the EGP to use.") ]
1546               CIM_RouteCalculationService REF Antecedent;
1547                   [Override ("Dependent"), Description (
1548                    "The dependent RouteCalculationService (e.g., the Route"
1549                    "CalculationService that is functioning as an EGP.") ]
1550               CIM_RouteCalculationService REF Dependent;
1551                   [Description (
1552                    "Sometimes it is necessary to inject EGP information, such "
1553                    "as that from BGP, into IGPs. This attribute defines whether "
1554                    "this should be done for the two routing protocols that are "
1555 karl  1.2          "defined by this association. The values below mean that no, "
1556                    " partial, and full EGP information is injected into the "
1557                    "IGP, respectively."),
1558                    ValueMap {"1", "2", "3"},
1559                    Values {"None", "Partial", "Full"} ]
1560               uint16 IGPInjection;
1561           };
1562           
1563           // ==================================================================
1564           //     BGPService
1565           // ==================================================================
1566                   [Version ("2.6.0"), Description (
1567                    "This class is used to represent the basic operation of BGP. "
1568                    "It is derived from RouteCalculationService, the superclass "
1569                    "of all routing protocols.") ]
1570           class CIM_BGPService : CIM_RouteCalculationService {
1571                   [Description (
1572                    "The BGPVersion property defines the version of BGP that "
1573                    "this router is using. This is part of the BGP peer "
1574                    "negotiation  process)."),
1575                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpVersion"} ]
1576 karl  1.2     uint8 BGPVersion; 
1577                   [Description (
1578                    "BGP sends errors using a NOTIFICATION message. This message "
1579                    "contains an error code, an error subcode, and error data. "
1580                    "The error code defines the type of the notification. The "
1581                    "'Cease' error is for all fatal errors that are not one of "
1582                    "the other five types of errors."),
1583                    ValueMap {"0", "1", "2", "3", "4", "5", "6"},
1584                    Values {"None", "Message Header Error", "OPEN Message Error",
1585                     "UPDATE Message Error", "Hold Timer Expired",
1586                     "Finite State Machine Error", "Cease"} ]
1587               uint16 LastErrorCode;
1588                   [Description (
1589                    "This defines the BGP error subcode for message header "
1590                    "errors. If the ErrorCode property is any other value, "
1591                    "then this property should be set to NULL."),
1592                    ValueMap {"0", "1", "2", "3"},
1593                    Values {"None", "Connection Not Synchronized",
1594                     "Bad Message Length", "Bad Message Type"},
1595                    ModelCorrespondence {"CIM_BGPService.ErrorCode"} ]
1596               uint16 LastMessageErrorSubCode;
1597 karl  1.2         [Description (
1598                    "This defines the BGP error subcode for OPEN message "
1599                    "errors. If the ErrorCode property is any other value, "
1600                    "then this property should be set to NULL."),
1601                    ValueMap {"0", "1", "2", "3", "4", "5", "6"},
1602                    Values {"None", "Unsupported Version Number", "Bad Peer AS",
1603                     "Bad BGP Identifier", "Unsupported Optional Parameter", 
1604                     "Authentication Failure", "Unacceptable Hold Time"},
1605                    ModelCorrespondence {"CIM_BGPService.ErrorCode"} ]
1606               uint16 LastOpenErrorSubCode;
1607                   [Description (
1608                    "This defines the BGP error subcode for UPDATE message "
1609                    "errors. If the ErrorCode property is any other value, "
1610                    "then this property should be set to NULL."),
1611                    ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
1612                     "10", "11"},
1613                    Values {"None", "Malformed Attribute List",
1614                     "Unrecognized Well-Known Attribute",
1615                     "Missing Well-Known Attribute", "Attribute Flags Error", 
1616                     "Attribute Length Error", "Invalid Origin Attribute",
1617                     "AS Routing Loop", "Invalid NEXT_HOP Attribute",
1618 karl  1.2           "Optional Attribute Error", "Invalid Network Field",
1619                     "Malformed AS_path"},
1620                    ModelCorrespondence {"CIM_BGPService.ErrorCode"} ]
1621               uint16 LastUpdateErrorSubCode;
1622           };
1623           
1624           // ==================================================================
1625           //     BGPPeerGroup
1626           // ==================================================================
1627                   [Version ("2.6.0"), Description (
1628                    "A BGP Peer Group is a set of BGP neighbors that share the "
1629                    "same update policies. This enables an administrator to "
1630                    "assign policies to the peer group, instead of individually. "
1631                    "This enables the routers in the Peer Group to optimize "
1632                    "UPDATE messages. Consequently, Peer Groups have a set of "
1633                    "restrictions that must be followed in order to work "
1634                    "correctly with external BGP peers. Otherwise, loss of "
1635                    "routing information could occur."
1636                    "\n\n"
1637                    "A BGPPeerGroup is weak to the AutonomousSystem that "
1638                    "contains it. Therefore, the keys from System must be "
1639 karl  1.2          "propagated to it.") ]
1640           class CIM_BGPPeerGroup : CIM_CollectionOfMSEs {
1641                   [Propagated ("CIM_AutonomousSystem.CreationClassName"), Key, 
1642           	   MaxLen (256), Description (
1643                    "The scoping AutonomousSystem's CreationClassName.") ] 
1644               string SystemCreationClassName;
1645                   [Propagated ("CIM_AutonomousSystem.Name"), Key, MaxLen (256),
1646                    Description ("The scoping AutonomousSystem's Name.") ] 
1647               string SystemName;
1648                   [Key, Description (
1649                    "The type of class that this instance is.") ]
1650               string CreationClassName;
1651                   [MaxLen(256), Key, Description (
1652                    "This is the name of the BGP Peer Group.") ]
1653               string Name;
1654                   [Description (
1655                    "This defines the time interval, in seconds, for the "
1656                    "ConnectRetry timer. The suggested value is 120 seconds."),
1657                    Units ("Seconds"),
1658                    Mappingstrings {
1659                     "MIB.IETF|RFC1657-MIB.bgpConnectRetryInterval"} ]
1660 karl  1.2     uint32 ConnectRetryInterval;
1661                   [Description (
1662                    "This defines the time interval in seconds for the Hold "
1663                    "Time configured for this BGP speaker with a peer. This "
1664                    "value is placed in an OPEN message sent to a peer by "
1665                    "this BGP speaker, and is compared with the Hold Time "
1666                    "field in the OPEN message received from the peer. This "
1667                    "enables this speaker to establish a mutually agreeable "
1668                    "Hold Time with the peer. This value must not be less "
1669                    "than three seconds. If it is zero, then the Hold Time "
1670                    "is NOT to be established with the peer. The suggested"
1671                    "value for this timer is 90 seconds."),
1672                    Units ("Seconds"),
1673                    Mappingstrings
1674                     {"MIB.IETF|RFC1657-MIB.bgpPeerHoldTimeConfigured"} ]
1675               uint16 HoldTimeConfigured;
1676                   [Description (
1677                    "This defines the time interval in seconds for the "
1678                    "KeepAlive timer configured for this BGP speaker with "
1679                    "a peer. This value will determine the frequency of "
1680                    "the KEEPALIVE messages relative to the value of the "
1681 karl  1.2          "HoldTimeConfigured property; the actual frequency is "
1682                    "specified by the value of the KeepAlive property. A "
1683                    "reasonable value is one third of that of the value of "
1684                    "the HoldTimeConfigured property. If it is zero, then "
1685                    "NO periodic KEEPALIVE messages are sent to the peer. "
1686                    "The suggested value for this property is 30 seconds. "
1687                    "The maximum value of this property is 21845 seconds."),
1688                    Units ("Seconds"),
1689                    Mappingstrings {
1690                     "MIB.IETF|RFC1657-MIB.bgpPeerKeepAliveConfigured"} ]
1691               uint16 KeepAliveConfigured;
1692                   [Description (
1693                    "This defines the time interval in seconds for the "
1694                    "MinASOriginationInterval timer. The suggested value for "
1695                    "this property is 15 seconds."),
1696                    Units ("Seconds"),
1697                    Mappingstrings
1698                     {"MIB.IETF|RFC1657-MIB.bgpPeerMinASOriginationInterval"} ]
1699               uint16 MinASOriginationInterval; 
1700                   [Description (
1701                    "This defines the time interval in seconds for the "
1702 karl  1.2          "MinRouteAdvertisementInterval timer. The suggested value "
1703                    "for this property is 30 seconds."),
1704                    Units ("Seconds"),
1705                    Mappingstrings {
1706                     "MIB.IETF|RFC1657-MIB.bgpPeerMinRouteAdvertisementInterval"} ]
1707               uint16 MinRouteAdvertisementInterval;
1708           };
1709           
1710           // ==================================================================
1711           //    HostedBGPPeerGroup
1712           // ==================================================================
1713                   [Association, Version ("2.6.0"), Description (
1714                    "A BGPPeerGroup is weak to the AutonomousSystem that "
1715                    "contains it. This association formalizes that "
1716                    "relationship.") ]
1717           class CIM_HostedBGPPeerGroup : CIM_Dependency {
1718                   [Override ("Antecedent"), Min (1), Max (1), Description (
1719                    "The AutonomousSystem that scopes the BGP peer group.") ]
1720               CIM_AutonomousSystem REF Antecedent;
1721                   [Override ("Dependent"), Weak, Description (
1722                    "The BGP peer group defined in the context of the "
1723 karl  1.2          "AutonomousSystem.") ] 
1724               CIM_BGPPeerGroup REF Dependent;
1725           };
1726           
1727           // ==================================================================
1728           //    ReflectorService
1729           // ==================================================================
1730                   [Association, Version ("2.6.0"), Description (
1731                    "This association will serve as the base class for defining "
1732                    "BGP routing policies for the reflector of this Cluster.") ] 
1733           class CIM_ReflectorService : CIM_Dependency {
1734                   [Override ("Antecedent"), Max (1), Description (
1735                    "The Cluster for which this policy is being defined.") ] 
1736               CIM_BGPCluster REF Antecedent;
1737                   [Override ("Dependent"), Min (1), Description (
1738                    "The BGPService to which the policy will be applied in "
1739                    "the Cluster.") ]
1740               CIM_BGPService REF Dependent;
1741           };
1742           
1743           // ==================================================================
1744 karl  1.2 //    ReflectorClientService
1745           // ==================================================================
1746                   [Association, Version ("2.6.0"), Description (
1747                    "This association will serve as the base class for defining "
1748                    "BGP routing policies for clients of the reflector of "
1749                    "this Cluster.") ] 
1750           class CIM_ReflectorClientService : CIM_Dependency {
1751                   [Override ("Antecedent"), Max (1), Description (
1752                    "The Cluster for which this policy is being defined.") ] 
1753               CIM_BGPCluster REF Antecedent;
1754                   [Override ("Dependent"), Min (1), Description (
1755                    "The BGPService to which the policy will be applied in "
1756                    "the Cluster.") ]
1757               CIM_BGPService REF Dependent;
1758           };
1759           
1760           // ==================================================================
1761           //    ReflectorNonClientService
1762           // ==================================================================
1763                   [Association, Version ("2.6.0"), Description (
1764                    "This association will serve as the base class for defining "
1765 karl  1.2          "BGP routing policies for the non-clients of the reflector "
1766                    "of this Cluster.") ] 
1767           class CIM_ReflectorNonClientService : CIM_Dependency {
1768                   [Override ("Antecedent"), Max (1), Description (
1769                    "The Cluster for which this policy is being defined.") ] 
1770               CIM_BGPCluster REF Antecedent;
1771                   [Override ("Dependent"), Description (
1772                    "The BGPService to which the policy will be applied in "
1773                    "the Cluster.") ]
1774               CIM_BGPService REF Dependent;
1775           };
1776           
1777           // ===================================================================
1778           //     FilterEntryBase 
1779           // ===================================================================
1780                   [Version ("2.6.0"), Description (
1781                    "  FilterEntryBase is an abstract class to define the naming "
1782                    "of all filter entries, and to allow their common "
1783                    "aggregation into FilterLists. The FilterEntry subclass "
1784                    "represents packet filtering. Other types of Entries are "
1785                    "possible - for example, to filter security credentials. \n"
1786 karl  1.2          "  FilterEntryBase is weak to the network device (i.e., the "
1787                    "ComputerSystem) that contains it. Hence, the ComputerSystem "
1788                    "keys are propagated to this class.") ]
1789           class CIM_FilterEntryBase : CIM_LogicalElement {
1790                   [Propagated ("CIM_ComputerSystem.CreationClassName"), Key, 
1791           	   MaxLen (256), 
1792                    Description (
1793                     "The scoping ComputerSystem's CreationClassName.") ] 
1794               string SystemCreationClassName;
1795                   [Propagated ("CIM_ComputerSystem.Name"), Key, MaxLen (256),
1796                    Description (
1797                     "The scoping ComputerSystem's Name.") ] 
1798               string SystemName;
1799                   [Key, MaxLen (256), 
1800                    Description (
1801                     "CreationClassName indicates the name of the class or the "
1802                     "subclass used in the creation of an instance. When used "
1803                     "with the other key properties of this class, this property "
1804                     "allows all instances of this class and its subclasses to "
1805                     "be uniquely identified.") ]
1806               string CreationClassName;
1807 karl  1.2         [Key, MaxLen (256), 
1808                    Description (
1809                     "The Name property defines the label by which the Filter"
1810           	    "Entry is known and uniquely identified.") ] 
1811               string Name;
1812                   [Description (
1813                     "Boolean indicating that the match condition described "
1814                     "in the properties of the FilterEntryBase subclass "
1815                     "should be negated.") ]
1816               boolean IsNegated;
1817           };
1818           
1819           // ==================================================================
1820           //     FilterEntry
1821           // ==================================================================
1822                   [Version ("2.6.0"), Description (
1823                    "A FilterEntry is used by network devices to identify "
1824                    "traffic and either forward it (with possibly further "
1825                    "processing) to its destination, or to deny its "
1826                    "forwarding. It is one of the building block of "
1827                    "FilterLists."
1828 karl  1.2          "\n\n"
1829                    "This class is oriented towards packet filtering. Other "
1830                    "subclasses of FilterEntryBase can be defined to do other "
1831                    "types of filtering. "
1832                    "\n\n"
1833                    "A FilterEntry is weak to the network device (i.e., the "
1834                    "ComputerSystem) that contains it. Hence, the ComputerSystem "
1835                    "keys are propagated to this class.") ]
1836           class CIM_FilterEntry : CIM_FilterEntryBase {
1837                   [Description (
1838                    "This defines the type of traffic that is being filtered. "
1839                    "This will affect the filtering rules in the MatchCondition "
1840                    "property of this class."),
1841                    ValueMap {"0", "1", "2", "3", "4"},
1842                    Values {"Unknown", "IPv4", "IPX", "IPv6", "Any"} ]
1843               uint16 TrafficType;
1844                   [Description (
1845                    "This specifies one of a set of ways to identify traffic. "
1846                    "if the value is 1 (i.e., \"Other\"), then the specific "
1847                    "type of filtering is specified in the "
1848                    "OtherMatchConditionType property of this class."),
1849 karl  1.2          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9",
1850                     "10", "11", "12", "13"},
1851                    Values {"Other", "Source Address and Mask",
1852                     "Destination Address and Mask", "Source Port",
1853                     "Source Port Range", "Destination Port",
1854                     "Destination Port Range", "Protocol Type",
1855                     "Protocol Type and Option", "DSCP", "ToS Value",
1856                     "802.1P Priority Value", "Any"},
1857                    ModelCorrespondence { 
1858                     "CIM_FilterEntry.OtherMatchConditionType"} ]
1859               uint16 MatchConditionType;
1860                   [Description (
1861                    "If the value of the MatchConditionType property in this "
1862                    "class is 1 (i.e., \"Other\"), then the specific type of "
1863                    "filtering is specified in this property."),
1864                    ModelCorrespondence { 
1865                     "CIM_FilterEntry.MatchConditionType"} ]
1866               string OtherMatchConditionType;
1867                   [Description (
1868                    "This is the value of the condition that filters the "
1869                    "traffic. It corresponds to the condition specified in the "
1870 karl  1.2          "MatchConditionType property. If, however, the value of the "
1871                    "MatchConditionProperty is 1, then it corresponds to the "
1872                    "condition specified in the OtherMatchConditionType "
1873                    "property.") ]
1874               string MatchConditionValue;
1875                   [Description (
1876                    "This defines whether the action should be to forward or "
1877                    "deny traffic meeting the match condition specified in "
1878                    "this filter."),
1879                    ValueMap {"1", "2"},
1880                    Values {"Permit", "Deny"} ]
1881               uint16 Action;
1882                   [Description (
1883                    "This defines whether this FilterEntry is the default "
1884                    "entry to use by its FilterList.") ]
1885               boolean DefaultFilter;
1886                   [Description (
1887                    "This defines the traffic class that is being matched by "
1888                    "this FilterEntry. Note that FilterEntries are aggregated "
1889                    "into FilterLists by the EntriesInFilterList "
1890                    "relationship. If the EntrySequence property of the "
1891 karl  1.2          "aggregation is set to 0, this means that all the Filter"
1892                    "Entries should be ANDed together. Consequently, the "
1893                    "TrafficClass property of each of the aggregated Entries "
1894                    "should be set to the same value."),         
1895                    ModelCorrespondence {"CIM_NextService.TrafficClass"} ]
1896               string TrafficClass;
1897           }; 
1898           
1899           // =================================================================== 
1900           //     IPHeadersFilter 
1901           // =================================================================== 
1902                   [Version ("2.6.0"), Description (
1903                    "IPHeadersFilter contains the most commonly " 
1904                    "required properties for performing filtering on IP, TCP or " 
1905                    "UDP headers. Properties not present in an instance of the " 
1906                    "IPHeadersFilter are treated as 'all values'.") ] 
1907           class CIM_IPHeadersFilter : CIM_FilterEntryBase { 
1908                   [Description (
1909                    "HdrIPVersion identifies the version of the IP "
1910                    "addresses for IP header filters. It is also used to "
1911                    "determine the sizes of the OctetStrings in the six "
1912 karl  1.2          "properties HdrSrcAddress, HdrSrcAddressEndOfRange, "
1913                    "HdrSrcMask, HdrDestAddress, HdrDestAddressEndOfRange "
1914                    "and HdrDestMask, as follows: \n"
1915                    "ipv4(4): OctetString(SIZE (4)) \n"
1916                    "ipv6(6): OctetString(SIZE (16|20)), \n"
1917                    "depending on whether a scope identifier is present. \n"
1918                    "\n"
1919                    "If a value for this property is not provided, then the "
1920                    "filter does not consider IP version in selecting matching "
1921                    "packets, i.e., IP version matches for all values. In this "
1922                    "case, the HdrSrcAddress, HdrSrcAddressEndOfRange, "
1923                    "HdrSrcMask, HdrDestAddress, HdrDestAddressEndOfRange and "
1924                    "HdrDestMask must also be not present."),
1925                    ValueMap {"4", "6"},
1926                    Values {"IPv4", "IPv6"},
1927                    ModelCorrespondence {"CIM_IPHeadersFilter.HdrSrcAddress",
1928                     "CIM_IPHeadersFilter.HdrSrcAddressEndOfRange",
1929                     "CIM_IPHeadersFilter.HdrSrcMask",
1930                     "CIM_IPHeadersFilter.HdrDestAddress",
1931                     "CIM_IPHeadersFilter.HdrDestAddressEndOfRange",
1932                     "CIM_IPHeadersFilter.HdrDestMask"} ]
1933 karl  1.2     uint8 HdrIPVersion;
1934                   [Description (
1935                    "HdrSrcAddress is an OctetString, of a size "
1936                    "determined by the value of the HdrIPVersion property, "
1937                    "representing a source IP address. When there is no "
1938                    "HdrSrcAddressEndOfRange value, this value is compared to "
1939                    "the source address in the IP header, subject to the mask "
1940                    "represented in the HdrSrcMask property. (Note that the "
1941                    "mask is ANDed with the address.) When there is a "
1942                    "HdrSrcAddressEndOfRange value, this value is the start of "
1943                    "the specified range (i.e., the HdrSrcAddress is lower than "
1944                    "the HdrSrcAddressEndOfRange) that is compared to the source "
1945                    "address in the IP header and matches on any value in the "
1946                    "range. \n"
1947                    "\n"
1948                    "If a value for this property is not provided, then the "
1949                    "filter does not consider HdrSrcAddress in selecting "
1950                    "matching packets, i.e., HdrSrcAddress matches for all "
1951                    "values."), 
1952                    OCTETSTRING,
1953                    ModelCorrespondence {"CIM_IPHeadersFilter.HdrIPVersion"} ]
1954 karl  1.2     uint8 HdrSrcAddress[];
1955                   [Description (
1956                    "HdrSrcAddressEndOfRange is an OctetString, of "
1957                    "a size determined by the value of the HdrIPVersion property, "
1958                    "representing the end of a range of source IP addresses "
1959                    "(inclusive), where the start of the range is the "
1960                    "HdrSrcAddress property value. \n"
1961                    "\n"
1962                    "If a value for HdrSrcAddress is not provided, then this "
1963                    "property also MUST NOT be provided. If a value for this "
1964                    "property is provided, then HdrSrcMask MUST NOT be provided."), 
1965                    OCTETSTRING,
1966                    ModelCorrespondence {"CIM_IPHeadersFilter.HdrIPVersion"} ]
1967               uint8 HdrSrcAddressEndOfRange[];
1968                   [Description (
1969                    "HdrSrcMask is an OctetString, of a size "
1970                    "determined by the value of the HdrIPVersion property, "
1971                    "representing a mask to be used in comparing the source "
1972                    "address in the IP header with the value represented in "
1973                    "the HdrSrcAddress property. \n"
1974                    "\n"
1975 karl  1.2          "If a value for this property is not provided, then the "
1976                    "filter does not consider HdrSrcMask in selecting "
1977                    "matching packets, i.e., the value of the HdrSrcAddress or "
1978                    "the source address range must match the source address "
1979                    "in the packet exactly. If a value for this "
1980                    "property is provided, then HdrSrcAddressEndOfRange "
1981                    "MUST NOT be provided."), 
1982                    OCTETSTRING,
1983                    ModelCorrespondence {"CIM_IPHeadersFilter.HdrIPVersion"} ]
1984               uint8 HdrSrcMask[];
1985                   [Description (
1986                    "HdrDestAddress is an OctetString, of a size "
1987                    "determined by the value of the HdrIPVersion property, "
1988                    "representing a destination IP address. When there is no "
1989                    "HdrDestAddressEndOfRange value, this value is compared to "
1990                    "the destination address in the IP header, subject to the "
1991                    "mask represented in the HdrDestMask property. (Note that "
1992                    "the mask is ANDed with the address.) When there is a "
1993                    "HdrDestAddressEndOfRange value, this value is the start of "
1994                    "the specified range (i.e., the HdrDestAddress is lower than "
1995                    "the HdrDestAddressEndOfRange) that is compared to the source "
1996 karl  1.2          "address in the IP header and matches on any value in the "
1997                    "range. \n"
1998                    "\n"
1999                    "If a value for this property is not provided, then the "
2000                    "filter does not consider HdrDestAddress in selecting "
2001                    "matching packets, i.e., HdrDestAddress matches for all "
2002                    "values."), 
2003                    OCTETSTRING,
2004                    ModelCorrespondence {"CIM_IPHeadersFilter.HdrIPVersion"} ]
2005               uint8 HdrDestAddress[];
2006                   [Description (
2007                    "HdrDestAddressEndOfRange is an OctetString, of "
2008                    "a size determined by the value of the HdrIPVersion property, "
2009                    "representing the end of a range of destination IP addresses "
2010                    "(inclusive), where the start of the range is the "
2011                    "HdrDestAddress property value. \n"
2012                    "\n"
2013                    "If a value for HdrDestAddress is not provided, then this "
2014                    "property also MUST NOT be provided. If a value for this "
2015                    "property is provided, then HdrDestMask MUST NOT be provided."), 
2016                    OCTETSTRING,
2017 karl  1.2          ModelCorrespondence {"CIM_IPHeadersFilter.HdrIPVersion"} ]
2018               uint8 HdrDestAddressEndOfRange[];
2019                   [Description (
2020                    "HdrDestMask is an OctetString, of a size "
2021                    "determined by the value of the HdrIPVersion property, "
2022                    "representing a mask to be used in comparing the destination "
2023                    "address in the IP header with the value represented in the "
2024                    "HdrDestAddress property. \n"
2025                    "\n"
2026                    "If a value for this property is not provided, then the "
2027                    "filter does not consider HdrDestMask in selecting "
2028                    "matching packets, i.e., the value of the HdrDestAddress or "
2029                    "the destination address range must match the destination "
2030                    "address in the packet exactly. If a value for this "
2031                    "property is provided, then HdrDestAddressEndOfRange "
2032                    "MUST NOT be provided."), 
2033                    OCTETSTRING,
2034                    ModelCorrespondence {"CIM_IPHeadersFilter.HdrIPVersion"} ]
2035               uint8 HdrDestMask[];
2036                   [Description (
2037                    "HdrProtocolID is an 8-bit unsigned integer, "
2038 karl  1.2          "representing an IP protocol type. This value is compared "
2039                    "to the Protocol field in the IP header. \n"
2040                    "\n"
2041                    "If a value for this property is not provided, then the "
2042                    "filter does not consider HdrProtocolID in selecting "
2043                    "matching packets, i.e., HdrProtocolID matches for all "
2044                    "values.") ]
2045               uint8 HdrProtocolID;
2046                   [Description (
2047                    "HdrSrcPortStart represents the lower end of "
2048                    "a range of UDP or TCP source ports. The upper end of the "
2049                    "range is represented by the HdrSrcPortEnd property. "
2050                    "The value of HdrSrcPortStart MUST be no greater than the "
2051                    "value of HdrSrcPortEnd. \n"
2052                    "\n"
2053                    "A source port filter is evaluated by testing whether the "
2054                    "source port identified in the IP header falls within the "
2055                    "range of values between HdrSrcPortStart and HdrSrcPortEnd, "
2056                    "INCLUDING these two end points. \n"
2057                    "\n"
2058                    "If a value for this property is not provided, then the "
2059 karl  1.2          "filter does not consider HdrSrcPortStart in selecting "
2060                    "matching packets, i.e., there is no lower bound in "
2061                    "matching source port values.") ]
2062               uint16 HdrSrcPortStart;
2063                   [Description (
2064                    "HdrSrcPortEnd represents the upper end of a "
2065                    "range of UDP or TCP source ports. The lower end of the "
2066                    "range is represented by the HdrSrcPortStart property. The "
2067                    "value of HdrSrcPortEnd MUST be no less than the value of "
2068                    "HdrSrcPortStart. A single port is indicated by equal values "
2069                    "for HdrSrcPortStart and HdrSrcPortEnd. \n"
2070                    "\n"
2071                    "A source port filter is evaluated by testing whether the "
2072                    "source port identified in the IP header falls within the "
2073                    "range of values between HdrSrcPortStart and HdrSrcPortEnd, "
2074                    "INCLUDING these two end points. \n"
2075                    "\n"
2076                    "If a value for this property is not provided, then the "
2077                    "filter does not consider HdrSrcPortEnd in selecting "
2078                    "matching packets, i.e., there is no upper bound in "
2079                    "matching source port values.") ]
2080 karl  1.2     uint16 HdrSrcPortEnd;
2081                   [Description (
2082                    "HdrDestPortStart represents the lower end of "
2083                    "a range of UDP or TCP destination ports. The upper end of "
2084                    "the range is represented by the HdrDestPortEnd property. "
2085                    "The value of HdrDestPortStart MUST be no greater than the "
2086                    "value of HdrDestPortEnd. A single port is indicated by " 
2087                    "equal values for HdrDestPortStart and HdrDestPortEnd. \n"
2088                    "\n"
2089                    "A destination port filter is evaluated by testing whether "
2090                    "the destination port identified in the IP header falls "
2091                    "within the range of values between HdrDestPortStart and "
2092                    "HdrDestPortEnd, INCLUDING these two end points. \n"
2093                    "\n"
2094                    "If a value for this property is not provided, then the "
2095                    "filter does not consider HdrDestPortStart in selecting "
2096                    "matching packets, i.e., there is no lower bound in "
2097                    "matching destination port values.") ]
2098               uint16 HdrDestPortStart;
2099                   [Description (
2100                    "HdrDestPortEnd represents the upper end of a "
2101 karl  1.2          "range of UDP or TCP destination ports. The lower end of the "
2102                    "range is represented by the HdrDestPortStart property. The "
2103                    "value of HdrDestPortEnd MUST be no less than the value of "
2104                    "HdrDestPortStart. A single port is indicated by equal "
2105                    "values for HdrDestPortStart and HdrDestPortEnd. \n"
2106                    "\n"
2107                    "A destination port filter is evaluated by testing whether "
2108                    "the destination port identified in the IP header falls "
2109                    "within the range of values between HdrDestPortStart and "
2110                    "HdrDestPortEnd, INCLUDING these two end points. \n"
2111                    "\n"
2112                    "If a value for this property is not provided, then the "
2113                    "filter does not consider HdrDestPortEnd in selecting "
2114                    "matching packets, i.e., there is no upper bound in "
2115                    "matching destination port values.") ]
2116               uint16 HdrDestPortEnd;
2117                   [Description (
2118                    "HdrDSCP is defined as a set of discrete "
2119                    "DiffServ code points, with no inherent structure. There "
2120                    "is no semantically significant relationship between "
2121                    "different HdrDSCPs. Consequently, there is no "
2122 karl  1.2          "provision for specifying a range of HdrDSCPs. \n"
2123                    "\n"
2124                    "Since, in IPv4, the HdrDSCP field may contain bits "
2125                    "to be interpreted as the TOS IP Precedence, this "
2126                    "property is also used to filter on IP Precedence. "
2127                    "Similarly, the IPv6 Traffic Class field is also "
2128                    "filtered using the value(s) in this property. \n"
2129                    "\n"
2130                    "HdrDSCP is defined as an array, to provide the "
2131                    "ability to specify several discrete DSCPs in a single "
2132                    "instance of IPHeadersFilter, that would be OR'ed "
2133                    "together to define the filter criteria. \n"
2134                    "\n"
2135                    "If a value for this property is not provided, then the "
2136                    "filter does not consider HdrDSCP in selecting matching "
2137                    "packets, i.e., HdrDSCP matches for all values."), 
2138                    MAXVALUE (63) ]
2139               uint8 HdrDSCP[];
2140                   [Description (
2141                    "The 20-bit Flow Label field in the IPv6 header "
2142                    "may be used by a source to label sequences of packets for "
2143 karl  1.2          "which it requests special handling by the IPv6 devices, such "
2144                    "as non-default quality of service or 'real-time' service. "
2145                    "In the filter, this 20-bit string is encoded in a 24-bit " 
2146                    "octetstring by right-adjusting the value and padding on "
2147                    "the left with b'0000'. \n"
2148                    "\n"
2149                    "If a value for this property is not provided, then the "
2150                    "filter does not consider HdrFlowLabel in selecting matching "
2151                    "packets, i.e., HdrFlowLabel matches for all values."), 
2152                    OCTETSTRING ]
2153               uint8 HdrFlowLabel[];
2154           }; 
2155               
2156           // ==================================================================
2157           //     FilterList
2158           // ==================================================================
2159                   [Version ("2.6.0"), Description (
2160                    "A FilterList is used by network devices to identify routes "
2161                    "by aggregating a set of FilterEntries into a unit, called a "
2162                    "FilterList. FilterLists can also be used to accept or deny "
2163                    "routing updates." 
2164 karl  1.2          "\n\n"
2165                    "A FilterList is weak to the network device (i.e., the "
2166                    "ComputerSystem) that contains it. Hence, the ComputerSystem "
2167                    "keys are propagated to this class.") ]
2168           class CIM_FilterList : CIM_LogicalElement {
2169                   [Propagated ("CIM_ComputerSystem.CreationClassName"), Key, 
2170                    MaxLen (256), Description (
2171                    "The scoping ComputerSystem's CreationClassName.") ] 
2172               string SystemCreationClassName;
2173                   [Propagated ("CIM_ComputerSystem.Name"), Key, MaxLen (256),
2174                    Description ("The scoping ComputerSystem's Name.") ] 
2175               string SystemName;
2176                   [Key, Description (
2177                    "The type of class that this instance is.") ]
2178               string CreationClassName;
2179                   [Key, MaxLen(256), Description (
2180                    "This is the name of the FilterList.") ]
2181               string Name;
2182                   [Description (
2183                    "This defines whether the FilterList is used "
2184                    "for input, output, or both input and output "
2185 karl  1.2          "filtering. All values are used with respect to "
2186                    "the interface for which the FilterList applies. "
2187                    "\n\n" 
2188                    "\"Not Applicable\" (0) is used when there is no "
2189                    "direction applicable to the FilterList.\n"
2190                    "\"Input\" (1) is used when the FilterList applies "
2191                    "to packets that are inbound on the related "
2192                    "interface.\n"
2193                    "\"Output\" (2) is used when the FilterList applies "
2194                    "to packets that are outbound on the related "
2195                    "interface.\n"
2196                    "\"Both\" (3) is used to indicate that "
2197                    "the direction is immaterial, e.g., to filter on "
2198                    "a source subnet regardless of whether the flow is "
2199                    "inbound or outbound.\n"
2200                    "\"Mirrored\" (4) is also applicable to "
2201                    "both inbound and outbound flow processing, but "
2202                    "indicates that the filter criteria are applied "
2203                    "asymmetrically to traffic in both directions "
2204                    "and, thus, specifies the reversal of source and "
2205                    "destination criteria (as opposed to the equality "
2206 karl  1.2          "of these criteria as indicated by \"Both\"). "
2207                    "The match conditions in the aggregated "
2208                    "FilterEntryBase subclass instances are defined "
2209                    "from the perspective of outbound flows and applied "
2210                    "to inbound flows as well by reversing the source "
2211                    "and destination criteria. So, for example, "
2212                    "consider a FilterList with 3 FilterEntries "
2213                    "indicating destination port = 80, and source and "
2214                    "destination addresses of a and b, respectively. "
2215                    "Then, for the outbound direction, the filter "
2216                    "entries match as specified and the 'mirror' (for "
2217                    "the inbound direction) matches on source "
2218                    "port = 80 and source and destination addresses "
2219                    "of b and a, respectively."),
2220                    ValueMap {"0", "1", "2", "3", "4"}, 
2221                    Values {"Not Applicable", "Input", "Output",
2222                     "Both", "Mirrored"} ]
2223               uint16 Direction;
2224           };
2225           
2226           // ==================================================================
2227 karl  1.2 //    FilterEntryInSystem
2228           // ==================================================================
2229                   [Association, Aggregation, Version ("2.6.0"), 
2230                    Description (
2231                    "All filter entries (FilterEntryBase and its subclasses) "
2232                    "can be used directly in the implementation of a network "
2233                    "device such as a router, host or firewall, or they can be "
2234                    "aggregated in a FilterList. Since both of these uses are "
2235                    "possible, FilterEntryBase is defined as weak to the "
2236                    "ComputerSystem (i.e., the network device) where it is used "
2237                    "to identify and act on network traffic.") ]
2238           class CIM_FilterEntryInSystem : CIM_SystemComponent {
2239                   [Override ("GroupComponent"), Aggregate, Min (1), Max (1), 
2240                    Description (
2241                    "The ComputerSystem/network device that aggregates the "
2242                    "FilterEntry, for identifying and acting on network "
2243                    "traffic.") ]
2244               CIM_ComputerSystem REF GroupComponent;
2245                   [Override ("PartComponent"), Weak, Description (
2246                    "The FilterEntry used in the System's operation.") ]
2247               CIM_FilterEntryBase REF PartComponent;
2248 karl  1.2 };
2249           
2250           // ==================================================================
2251           //    FilterListInSystem
2252           // ==================================================================
2253                   [Association, Aggregation, Version ("2.6.0"), 
2254                    Description (
2255                    "The purpose of this weak association is to model the use of "
2256                    "a FilterList by a ComputerSystem (e.g., a router, firewall "
2257                    "or host). One example of such a use is in the QoS Model, "
2258                    "where a ClassifierService aggregates a set of FilterLists "
2259                    "in order to build its services.") ]
2260           class CIM_FilterListInSystem : CIM_SystemComponent {
2261                   [Override ("GroupComponent"), Aggregate, Min (1), Max (1), 
2262                    Description (
2263                    "The ComputerSystem/network device that aggregates the "
2264                    "FilterList and administers it.") ]
2265               CIM_ComputerSystem REF GroupComponent;
2266                   [Override ("PartComponent"), Weak, Description (
2267                    "The FilterList used in the System's operation.") ]
2268               CIM_FilterList REF PartComponent; 
2269 karl  1.2 };
2270           
2271           // ==================================================================
2272           //     RoutingPolicy
2273           // ==================================================================
2274                   [Version ("2.6.0"), Description (
2275                    "This class is used to implement routing policies. It "
2276                    "aggregates a set of FilterLists, along with other "
2277                    "appropriate constructs, into a unit. One of the most "
2278                    "important uses of this class is to change the routing "
2279                    "policy by changing values of various BGP attributes in a "
2280                    "consistent manner." 
2281                    "\n\n"
2282                    "A RoutingPolicy is weak to the network device (i.e., the "
2283                    "ComputerSystem) that contains it. Hence, the ComputerSystem "
2284                    "keys are propagated to this class.") ]
2285           class CIM_RoutingPolicy : CIM_LogicalElement {
2286                   [Propagated ("CIM_ComputerSystem.CreationClassName"), Key, 
2287           	   MaxLen (256), Description (
2288                    "The scoping ComputerSystem's CreationClassName.") ] 
2289               string SystemCreationClassName;
2290 karl  1.2         [Propagated ("CIM_ComputerSystem.Name"), Key, MaxLen (256),
2291                    Description ("The scoping ComputerSystem's Name.") ] 
2292               string SystemName;
2293                   [Key, MaxLen(256), Description (
2294                    "CreationClassName indicates the name of the class or the "
2295                    "subclass used in the creation of an instance. When used "
2296                    "with the other key properties of this class, this property "
2297                    "allows all instances of this class and its subclasses to "
2298                    "be uniquely identified.") ]
2299               string CreationClassName;
2300                   [Key, MaxLen(256), Description (
2301                    "This is the name of the Routing Policy.") ]
2302               string Name;
2303                   [Description (
2304                    "The Description property is a free-form string that "
2305                    "provides a textual description of the routing policy.") ] 
2306               string Description;
2307                   [Description (
2308                    "This defines the type of action that will be performed "
2309                    "if the match conditions of this filter policy are met. "
2310                    "There are essentially three choices: forward the traffic "
2311 karl  1.2          "unmodified, forward the traffic, but modify either the "
2312                    "BGP attributes describing the route and/or other "
2313                    "attributes that define how to condition the traffic "
2314                    "(e.g., its ToS byte settings), or prevent the traffic "
2315                    "from being forwarded."),
2316                    ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9"},
2317                    Values {"Accept As Is", "Accept With BGP Changes", 
2318                     "Accept and Remark Packet",
2319                     "Accept With BGP and Remark Changes",
2320                     "Accept With Other Actions",
2321                     "Accept With BGP Changes and Other Actions",
2322                     "Accept with Remark Changes and Other Actions",
2323                     "Accept with BGP and Remark Changes and Other Actions",
2324                     "Deny"} ]
2325               uint16 Action;
2326                   [Description (
2327                    "This defines one or more BGP attributes that should be"
2328                    "used to modify this routing update."),
2329                    ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", 
2330                     "10"},
2331                    Values {"Origin", "AS_Path", "NEXT_HOP", "Multi_Exit_Disc",
2332 karl  1.2           "Local_Pref", "Atomic_Aggregate", "Aggregator", "Community",
2333                     "Originator_ID", "Cluster_List"} ]
2334               uint16 BGPAction;
2335                   [Description (
2336                    "The value for the corresponding BGPAction.") ]
2337               string BGPValue;
2338                   [Description (
2339                    "This defines a remarking action for this traffic."),
2340                    ValueMap {"1", "2", "3", "4", "5", "6", "7"},
2341                    Values {"Change DSCP", "Change ToS", "Change 802.1Q Value",
2342                     "Change CIR", "Change CBR", "Change ABR", "Change VBR"} ]
2343               uint16 RemarkAction; 
2344                   [Description (
2345                    "The value for the corresponding RemarkAction.") ]
2346               string RemarkValue;
2347                   [Description (
2348                    "This defines other actions to be taken for this traffic."),
2349                    ValueMap {"1", "2", "3", "4", "5", "6", "7"},
2350                    Values {"Other", "Input Flow Policing",
2351                     "Output Flow Policing", "Input Aggregate Policing",
2352                     "Output Aggregate Policing",
2353 karl  1.2           "PoliceByMarkingDown", "PoliceByDroppingDown"} ]
2354               uint16 ConditioningAction;
2355                   [Description (
2356                    "If the value of the ConditioningAction property of this "
2357                    "class is 1, this contains an application-specific type of "
2358                    "conditioning that is to be performed. Otherwise, if the "
2359                    "ConditioningAction property is any other value, the value "
2360                    "of this property should be NULL."),
2361                    ModelCorrespondence { 
2362                     "CIM_RoutingPolicy.ConditioningAction"} ]
2363               string OtherConditioningAction; 
2364                   [Description (
2365                    "The value for the corresponding ConditioningAction.") ]
2366               string ConditioningValue;
2367                   [Description (
2368                    "This controls whether BGP attribute values replace, get "
2369                    "prepended, or get appended to their existing values."),
2370                    ValueMap {"1", "2", "3"},
2371                    Values {"Replace", "Prepend", "Append"} ]
2372               uint16 AttributeAction;
2373           };
2374 karl  1.2 
2375           // ==================================================================
2376           //    HostedRoutingPolicy
2377           // ==================================================================
2378                   [Association, Version ("2.6.0"), Description (
2379                    "A RoutingPolicy is weak to the network device (i.e., the "
2380                    "ComputerSystem) that contains it. This association "
2381                    "formalizes that relationship.") ]
2382           class CIM_HostedRoutingPolicy : CIM_Dependency {
2383                   [Override ("Antecedent"), Min (1), Max (1), Description (
2384                    "The network device/computer system that scopes the "
2385                    "RoutingPolicy.") ]
2386               CIM_ComputerSystem REF Antecedent;
2387                   [Override ("Dependent"), Weak, Description (
2388                    "The routing policy defined in the context of the "
2389                    "network device.") ] 
2390               CIM_RoutingPolicy REF Dependent;
2391           };
2392           
2393           // ==================================================================
2394           //    EntriesInFilterList
2395 karl  1.2 // ==================================================================
2396                   [Association, Aggregation, Version ("2.6.0"), 
2397                    Description (
2398                    "This is a specialization of the CIM_Component aggregation "
2399                    "which is used to define a set of filter entries (subclasses "
2400                    "of FilterEntryBase) that are aggregated by a particular "
2401                    "FilterList.") ]
2402           class CIM_EntriesInFilterList : CIM_Component {
2403                   [Override ("GroupComponent"), Aggregate, Max (1), 
2404                    Description (
2405                     "The FilterList, which aggregates the set "
2406                     "of FilterEntries.") ] 
2407               CIM_FilterList REF GroupComponent;
2408                   [Override ("PartComponent"), 
2409                    Description (
2410                     "Any subclass of FilterEntryBase which is a part of "
2411                     "the FilterList.") ] 
2412               CIM_FilterEntryBase REF PartComponent;
2413                   [Description (
2414                     "The order of the Entry relative to all others in the "
2415                     "FilterList. A value of zero indicates that all the Entries "
2416 karl  1.2           "should be ANDed together. Use of the Sequence property "
2417                     "should be consistent across the List. It is not valid to "
2418                     "define some Entries as ANDed in the FilterList (Sequence"
2419                     "=0) while other Entries have a non-zero Sequence number.") ]
2420               uint16 EntrySequence;
2421           };
2422           
2423           // ==================================================================
2424           //    ListsInRoutingPolicy
2425           // ==================================================================
2426                   [Association, Aggregation, Version ("2.6.0"), 
2427                    Description (
2428                    "This is a specialization of the CIM_Component aggregation "
2429                    "which is used to define a set of FilterLists that are "
2430                    "aggregated by a particular RoutingPolicy.") ]
2431           class CIM_ListsInRoutingPolicy : CIM_Component {
2432                   [Override ("GroupComponent"), Aggregate, Description (
2433                    "The RoutingPolicy, which aggregates the set "
2434                    "of FilterLists.") ] 
2435               CIM_RoutingPolicy REF GroupComponent;
2436                   [Override ("PartComponent"), Description (
2437 karl  1.2          "A FilterList, which is part-of the RoutingPolicy.") ] 
2438               CIM_FilterList REF PartComponent;
2439                   [Description ("The position of the FilterList relative "
2440                    "to all other entries in the RoutingPolicy.") ]
2441               uint16 ListSequence;
2442           };
2443           
2444           // ==================================================================
2445           //    BGPRoutingPolicy
2446           // ==================================================================
2447                   [Association, Version ("2.6.0"), Description (
2448                    "This is a specialization of the Dependency association, "
2449                    "and defines the relationship between a BGPService and the "
2450                    "RoutingPolicy that control it.") ] 
2451           class CIM_BGPRoutingPolicy : CIM_Dependency {
2452                   [Override ("Antecedent"), Description (
2453                    "The BGP routing policy object.") ] 
2454               CIM_RoutingPolicy REF Antecedent;
2455                   [Override ("Dependent"), Description (
2456                    "The BGPService that is controlled by the routing policy.") ] 
2457               CIM_BGPService REF Dependent;
2458 karl  1.2 };
2459           
2460           // ==================================================================
2461           //    BGPPeerGroupService
2462           // ==================================================================
2463                   [Association, Version ("2.6.0"), Description (
2464                    "This defines the relationship between a BGPService and the "
2465                    "BGP Peer Group that hosts it.") ] 
2466           class CIM_BGPPeerGroupService : CIM_Dependency {
2467                   [Override ("Antecedent"), Min (1), Max (1), 
2468                    Description (
2469                    "The BGP Peer Group that hosts the BGP Service.") ] 
2470               CIM_BGPPeerGroup REF Antecedent;
2471                   [Override ("Dependent"),
2472                    Description (
2473                    "The BGPService that is hosted in the BGP Peer Group.") ] 
2474               CIM_BGPService REF Dependent;
2475           };
2476           
2477           // ==================================================================
2478           //    AdministrativeDistance
2479 karl  1.2 // ==================================================================
2480                   [Version ("2.6.0"), Description (
2481                    "Information in this class affects the choice of one "
2482                    "protocol over another, when two protocols learn "
2483                    "the same route. Properties define the preference of "
2484                    "a protocol, called its distance. The lower the "
2485                    "distance, the higher the preference for that protocol. "
2486                    "This class affects ALL routes and contains the "
2487                    "default distances. Specific administrative "
2488                    "distances relative to an individual route and Forwarding"
2489                    "Service are defined in the NextHopForwardedByService "
2490                    "association, its AdminDistance property."
2491                    "\n\n"
2492                    "AdministrativeDistance, being a global object, is weak to "
2493                    "the AdminDomain that contains it. Hence, the AdminDomain "
2494                    "keys are propagated to this class.") ]
2495           class CIM_AdministrativeDistance : CIM_LogicalElement {
2496                   [Propagated ("CIM_AdminDomain.CreationClassName"), Key, 
2497                    MaxLen (256), Description (
2498                    "The scoping AdminDomain's CreationClassName.") ] 
2499               string SystemCreationClassName;
2500 karl  1.2         [Propagated ("CIM_AdminDomain.Name"), Key, MaxLen (256),
2501                    Description ("The scoping AdminDomain's Name.") ] 
2502               string SystemName; 
2503                   [Key, Description (
2504                    "The type of class that this instance is.") ]
2505               string CreationClassName;
2506                   [Key, MaxLen(256), Description (
2507                    "This is the name of the AdministrativeDistance class.") ]
2508               string Name; 
2509                   [Description (
2510                    "The distance for directly connected peers. It has a default "
2511                    "value of 0.") ]
2512               uint8 DirectConnect;
2513                   [Description (
2514                    "The distance for staticly connected peers. It has a default "
2515                    "value of 1.") ]
2516               uint8 Static;
2517                   [Description (
2518                    "The distance for peers using EBGP. It has a default value "
2519                    "of 20.") ]
2520               uint8 EBGP; 
2521 karl  1.2         [Description (
2522                    "The distance for peers using internal EIGRP. It has a "
2523                    "default value of 90.") ]
2524               uint8 EIGRPInternal; 
2525                   [Description (
2526                    "The distance for peers using IGRP. It has a default value "
2527                    "of 100.") ]
2528               uint8 IGRP; 
2529                   [Description (
2530                    "The distance for peers using OSPF. It has a default value "
2531                    "of 110.") ]
2532               uint8 OSPF; 
2533                   [Description (
2534                    "The distance for peers using ISIS. It has a default value "
2535                    "of 115.") ]
2536               uint8 ISIS; 
2537                   [Description (
2538                    "The distance for peers using RIP. It has a default value "
2539                    "of 120.") ]
2540               uint8 RIP; 
2541                   [Description (
2542 karl  1.2          "The distance for peers using EGP. It has a default value "
2543                    "of 140.") ]
2544               uint8 EGP; 
2545                   [Description (
2546                    "The distance for peers using external EIGRP. It has a "
2547                    "default value of 170.") ]
2548               uint8 EIGRPExternal; 
2549                   [Description (
2550                    "The distance for peers using IBGP. It has a default value "
2551                    "of 200.") ]
2552               uint8 IBGP; 
2553                   [Description (
2554                    "The distance for peers using BGP locally. It has a default "
2555                    "value of 200.") ]
2556               uint8 BGPLocal; 
2557                   [Description (
2558                    "The distance for peers using an unknown protocol. It has a "
2559                    "default value of 255.") ]
2560               uint8 Unknown;
2561           };
2562           
2563 karl  1.2 // ==================================================================
2564           //    HostedAdminDistance
2565           // ==================================================================
2566                   [Association, Version ("2.6.0"), Description (
2567                    "AdministrativeDistance, being a global object, is weak to "
2568                    "the AdminDomain that contains it. This association "
2569                    "formalizes that relationship.") ]
2570           class CIM_HostedAdminDistance : CIM_Dependency {
2571                   [Override ("Antecedent"), Min (1), Max (1), Description (
2572                    "The AdminDomain that scopes the AdministrativeDistance.") ]
2573               CIM_AdminDomain REF Antecedent;
2574                   [Override ("Dependent"), Weak, Description (
2575                    "The table of (global) administrative distances that are "
2576                    "defined in the context of the AdminDomain.") ] 
2577               CIM_AdministrativeDistance REF Dependent;
2578           };
2579           
2580           // ==================================================================
2581           //    BGPAdminDistance
2582           // ==================================================================
2583                   [Association, Version ("2.6.0"), Description (
2584 karl  1.2          "This is a specialization of the Dependency association, and "
2585                    "defines the relationship between a BGPService and the "
2586                    "Administrative Distances that it uses to control the "
2587                    "(BGP) routing decisions that it makes.") ] 
2588           class CIM_BGPAdminDistance : CIM_Dependency {
2589                   [Override ("Antecedent"), Min (1), Max (1), Description (
2590                    "The table of (global) administrative distances that are "
2591                    "used by all BGP services.") ] 
2592               CIM_AdministrativeDistance REF Antecedent;
2593                   [Override ("Dependent"), Description (
2594                    "The BGP service object, that makes BGP routing decisions.") ]
2595               CIM_BGPService REF Dependent;
2596           };
2597           
2598           // ==================================================================
2599           //     BGPRouteMap
2600           // ==================================================================
2601                   [Version ("2.6.0"), Description (
2602                    "A route map is used to control and modify routing "
2603                    "information as well as to define when a route is "
2604                    "redistributed between routing domains. Route maps are "
2605 karl  1.2          "placed in router configuration files, and several "
2606                    "instances of the same route map may be used to implement "
2607                    "different actions (see accompanying white paper). "
2608                    "\n\n"
2609                    "Route maps may use FilterLists to identify the route " 
2610                    " (again, see the accompanying white paper). "
2611                    "\n\n"
2612                    "A BGPRouteMap is specific to a given AutonomousSystem that "
2613                    "contains it. Hence, the keys of the AutonomousSystem are "
2614                    "propagated to this class.") ]
2615           class CIM_BGPRouteMap : CIM_LogicalElement {
2616                   [Propagated ("CIM_AutonomousSystem.CreationClassName"), Key, 
2617                    MaxLen (256), Description (
2618                    "The scoping AutonomousSystem's CreationClassName.") ] 
2619               string SystemCreationClassName;
2620                   [Propagated ("CIM_AutonomousSystem.Name"), Key, MaxLen (256),
2621                    Description ("The scoping AutonomousSystem's Name.") ] 
2622               string SystemName; 
2623                   [Key, Description (
2624                    "The type of class that this instance is.") ]
2625               string CreationClassName;
2626 karl  1.2         [Key, MaxLen(256), Description (
2627                    "This is the name of the RouteMap class.") ]
2628               string Name; 
2629                   [Description (
2630                    "This defines whether this RouteMap is used for input, "
2631                    "output, or both input and output filtering."),
2632                    ValueMap {"1", "2", "3"},
2633                    Values {"Input", "Output", "Both"} ]
2634               uint16 Direction;
2635                   [Description (
2636                    "This defines whether the action should be to forward or "
2637                    "deny traffic meeting the match condition specified in this "
2638                    "RouteMap"),
2639                    ValueMap {"1", "2"},
2640                    Values {"Permit", "Deny"} ] 
2641               uint16 Action;
2642                   [Description (
2643                    "This specifies the criteria that must be matched in order "
2644                    "for the corresponding MatchAction to take effect. The "
2645                    "matching of the criteria may be specified by using a "
2646                    "FilterList. For example, the command 'match ip address foo' "
2647 karl  1.2          "uses the FilterList named 'foo' to do the matching of IP "
2648                    "addresses."),
2649                    ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9"},
2650                    Values {"Other", "Source Address and Mask",
2651                     "Destination Address and Mask", "Source Port",
2652                     "Source Port Range", "Destination Port",
2653                     "Destination Port Range", "Protocol Type",
2654                     "Protocol Type and Option"},
2655                    ModelCorrespondence { 
2656                     "CIM_RouteMap.OtherMatchConditionType"} ]
2657               uint16 MatchConditionType;
2658                   [Description (
2659                    "If the value of the MatchConditionType property in this "
2660                    "class is 1 (i.e., \"Other\"), then the specific type of "
2661                    "filtering is specified in this property."),
2662                    ModelCorrespondence { 
2663                     "CIM_RouteMap.MatchConditionType"} ]
2664               string OtherMatchConditionType; 
2665                   [Description (
2666                    "This defines an additional action to take if the "
2667                    "MatchCondition is satisfied. This definition is "
2668 karl  1.2          "specifically limited to BGP filtering for now (e.g., its "
2669                    "use is limited to setting a BGP attribute to a specific "
2670                    "value), and will be upgraded in a subsequent release. The "
2671                    "actual value of the metric is specified in the "
2672                    "SetMetricValue property."),
2673                    ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9"},
2674                    Values {"Origin", "AS_Path", "NEXT_HOP", "Multi_Exit_Disc",
2675                     "Local_Pref", "Atomic_Aggregate", "Aggregator", "Community",
2676                     "Originator_ID"} ]
2677               uint16 SetMetricType;
2678                   [Description (
2679                    "This is the value of the metric that is being set for the "
2680                    "BGP attribute defined in the SetMetricType property.") ]
2681               string SetMetricValue;
2682           };
2683           
2684           // ==================================================================
2685           //    HostedBGPRouteMap
2686           // ==================================================================
2687                   [Association, Version ("2.6.0"), Description (
2688                    "A BGPRouteMap is weak to the AutonomousSystem that "
2689 karl  1.2          "contains it. This association formalizes that "
2690                    "relationship.") ]
2691           class CIM_HostedBGPRouteMap : CIM_Dependency {
2692                   [Override ("Antecedent"), Min (1), Max (1), Description (
2693                    "The AutonomousSystem that scopes the BGP route map.") ]
2694               CIM_AutonomousSystem REF Antecedent;
2695                   [Override ("Dependent"), Weak, Description (
2696                    "The BGP route map defined in the context of the "
2697                    "AutonomousSystem.") ] 
2698               CIM_BGPRouteMap REF Dependent;
2699           };
2700           
2701           // ==================================================================
2702           //    BGPRouteMapsInRoutingPolicy
2703           // ==================================================================
2704                   [Association, Aggregation, Version ("2.6.0"), 
2705                    Description (
2706                    "This aggregation defines the RouteMaps that are used by a "
2707                    "particular RoutingPolicy object. Multiple instances of the "
2708                    "same RouteMap may be used in the same RoutingPolicy "
2709                    "instance; if this is desired, then the Sequence attribute "
2710 karl  1.2          "of this aggregation can be used to disambiguate them.") ]
2711           class CIM_BGPRouteMapsInRoutingPolicy : CIM_Component {
2712                   [Override ("GroupComponent"), Aggregate, Description (
2713                    "The RoutingPolicy that aggregates the RouteMaps.") ] 
2714               CIM_RoutingPolicy REF GroupComponent;
2715                   [Override ("PartComponent"), Description (
2716                    "The RouteMaps that are used by the RoutingPolicy.") ] 
2717               CIM_BGPRouteMap REF PartComponent;
2718                   [Description (
2719                    "This defines the position of this RouteMap instance "
2720                    "relative to all other instances of the same RouteMap.") ]
2721               uint16 MapSequence;
2722           };
2723           
2724           // ==================================================================
2725           //    BGPPeerUsesRouteMap
2726           // ==================================================================
2727                   [Association, Aggregation, Version ("2.6.0"), 
2728                    Description (
2729                    "This association defines the RouteMaps that are aggregated "
2730                    "and used by a particular BGPPeerGroup object. Multiple "
2731 karl  1.2          "instances of the same RouteMap may be aggregated into the "
2732                    "same BGPPeerGroup; if this is desired, then the MapSequence "
2733                    "attribute of the association can be used to disambiguate "
2734                    "them.") ]
2735           class CIM_BGPPeerUsesRouteMap : CIM_CollectedMSEs {
2736                   [Override("Collection"), Aggregate, 
2737                    Description (
2738                    "The BGPPeerGroup that aggregates the RouteMaps.") ] 
2739               CIM_BGPPeerGroup REF Collection;
2740                   [Override("Member"), 
2741                    Description (
2742                    "The RouteMaps that are used by the BGPPeerGroup.") ] 
2743               CIM_BGPRouteMap REF Member;
2744                   [Description (
2745                    "This defines the position of this RouteMap instance "
2746                    "relative to all other instances of the same RouteMap.") ]
2747               uint16 MapSequence;
2748           };
2749           
2750           // ==================================================================
2751           //    FilterListsInBGPRouteMap
2752 karl  1.2 // ==================================================================
2753                   [Association, Version ("2.6.0"), Description (
2754                    "RouteMaps do not have to use FilterLists, but if they do, "
2755                    "this association defines which FilterList is used by a "
2756                    "particular RouteMap.") ] 
2757           class CIM_FilterListsInBGPRouteMap : CIM_Dependency {
2758                   [Override ("Antecedent"), Description (
2759                    "The FilterList used by a RouteMap.") ] 
2760               CIM_FilterList REF Antecedent;
2761                   [Override ("Dependent"), Description (
2762                    "The RouteMap using the FilterList.") ] 
2763               CIM_BGPRouteMap REF Dependent;
2764           };
2765           
2766           // ==================================================================
2767           //    InBGPPeerGroup
2768           // ==================================================================
2769                   [Association, Aggregation, Version ("2.6.0"), 
2770                    Description (
2771                    "This aggregation defines the specific routers (i.e., "
2772                    "ComputerSystems) that participate in a PeerGroup.") ] 
2773 karl  1.2 class CIM_InBGPPeerGroup : CIM_CollectedMSEs {
2774                   [Override ("Collection"), Aggregate, Max (1), Description (
2775                    "The PeerGroup that aggregates the routers.") ] 
2776               CIM_BGPPeerGroup REF Collection;
2777                   [Override ("Member"), Min (2), Description (
2778                    "The routers that comprise the PeerGroup.") ] 
2779               CIM_ComputerSystem REF Member;
2780           };
2781           
2782           // ==================================================================
2783           //    CalculatesAmong 
2784           // ==================================================================
2785                   [Association, Version ("2.6.0"), Description (
2786                    "This is a specialization of the ServiceSAPDependency "
2787                    "association, indicating that the referenced "
2788                    "ProtocolEndpoint is utilized by the "
2789                    "RouteCalculationService to provide its functionality.") ]
2790           class CIM_CalculatesAmong : CIM_ServiceSAPDependency {
2791                   [Override ("Antecedent"), 
2792           	   Description ("The required ProtocolEndpoint") ] 
2793               CIM_ProtocolEndpoint REF Antecedent;
2794 karl  1.2         [Override ("Dependent"), Description (
2795                    "The RouteCalculationService, which is dependent on the "
2796                    "underlying ProtocolEndpoint.") ] 
2797               CIM_RouteCalculationService REF Dependent;
2798                   [Description (
2799                    "TRUE indicates that this ProtocolEndpoint represents a "
2800                    "static route, and FALSE means that it represents a "
2801                    "dynamically-learned route.") ]
2802               boolean IsStatic;
2803           };
2804           
2805           // ==================================================================
2806           //    BGPAttributes 
2807           // ==================================================================
2808                   [Version ("2.6.0"), Description (
2809                    "This class defines all of the BGP Attributes, for a given "
2810                    "version of the BGP protocol, that can be used to affect "
2811                    "routing decisions. "
2812                    "\n\n"
2813                    "BGPAttributes are specific to a given AutonomousSystem that "
2814                    "contains it. Hence, the keys of the AutonomousSystem are "
2815 karl  1.2          "propagated to this class.") ]
2816           class CIM_BGPAttributes : CIM_LogicalElement {
2817                   [Propagated ("CIM_AutonomousSystem.CreationClassName"), Key, 
2818                    MaxLen (256), Description (
2819                    "The scoping AutonomousSystem's CreationClassName.") ] 
2820               string SystemCreationClassName;
2821                   [Propagated ("CIM_AutonomousSystem.Name"), Key, MaxLen (256),
2822                    Description ("The scoping AutonomousSystem's Name.") ] 
2823               string SystemName; 
2824                   [Key, Description (
2825                    "This defines the version of the BGP protocol.") ]
2826               string Version;
2827                   [Description (
2828                    "This defines the priority, or preference, of a route, in "
2829                    "order to better compare it with other routes for the same "
2830                    "destination. Higher values indicate a higher preference "
2831                    "for a route."),
2832                    Mappingstrings {
2833                     "MIB.IETF|RFC1657-MIB.bgp4PathAttrLocalPref"} ]
2834               uint16 LocalPreference;
2835                   [Description (
2836 karl  1.2          "This attribute is a sequences of the AS numbers through "
2837                    "which routing information carried in this UPDATE message "
2838                    "has passed. The components of this list can be AS_SETs "
2839                    "or AS_SEQUENCEs."),
2840                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgp4PathAttrASPath"} ]
2841               string ASPath;
2842                   [Description (
2843                    "This is the set of all elements contained in all specific "
2844                    "paths that are being summarized, so that those attributes "
2845                    "will remain available to the routing decision process.") ]
2846               string AS_Set;
2847                   [Description (
2848                    "This attribute defines the IP address of the border router "
2849                    "that should be used as the next hop to the destinations "
2850                    "listed in the UPDATE message."),
2851                    Mappingstrings {
2852                     "MIB.IETF|RFC1657-MIB.bgp4PathAttrNextHop"} ]
2853               string NextHop; 
2854                   [Description (
2855                    "This defines the next hop to be the IP address of the "
2856                    "border IBGP neighbor.") ]
2857 karl  1.2     string NextHopSelf;
2858                   [Description (
2859                    "This is used on external (e.g., inter-AS) links to indicate "
2860                    "which is the preferred entry point into an AS, when that AS "
2861                    "has multiple entry points. Lower MED values have "
2862                    "preference."),
2863                    Mappingstrings {
2864                     "MIB.IETF|RFC1657-MIB.bgp4PathAttrMultiExitDisc"} ]
2865               uint32 MED;
2866                   [Description (
2867                    "This defines a group of destinations that share a similar "
2868                    "property. Communities are not restricted to a single AS, "
2869                    "and can span multiple ASs. This attribute is used to "
2870                    "simplify routing policies by basing policies on a logical "
2871                    "value, as opposed to an IP address or an AS number.") ]
2872               uint32 BGPCommunityValue;
2873                   [Description (
2874                    "This attribute gets set if there are overlapping routes, "
2875                    "and a less-specific route is selected instead of a more "
2876                    "specific one (e.g., a system propagates an aggregate "
2877                    "that causes loss of information."),
2878 karl  1.2          Mappingstrings {
2879                     "MIB.IETF|RFC1657- MIB.bgp4PathAttrAtomicAggregate"} ]
2880               boolean AtomicAggregate;
2881                   [Description (
2882                    "This specifies the AS and IP address of the router that has "
2883                    "generated an aggregate."),
2884                    Mappingstrings {
2885                     "MIB.IETF|RFC1657- MIB.bgp4PathAttrAggregatorAS"} ]
2886               string Aggregator;
2887                   [Description (
2888                    "This is generated by the AS that originates the routing "
2889                    "information. There are three types of origins - IGP, EGP, "
2890                    "and INCOMPLETE. These correspond to whether the information "
2891                    "was learned internally in the AS, externally via an EGP, "
2892                    "or by some other means."),
2893                    ValueMap {"1", "2", "3"},
2894                    Values {"IGP", "EGP", "INCOMPLETE"},
2895                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgp4PathAttrOrigin"} ]
2896               uint16 Origin; 
2897                   [Description (
2898                    "This is the router ID for the ORIGIN attribute.") ]
2899 karl  1.2     string OriginatorID;
2900           };
2901           
2902           // ==================================================================
2903           //    HostedBGPAttributes
2904           // ==================================================================
2905                   [Association, Version ("2.6.0"), Description (
2906                    "The class BGPAttributes is weak to the AutonomousSystem "
2907                    "that contains it. This association formalizes that "
2908                    "relationship.") ] 
2909           class CIM_HostedBGPAttributes : CIM_Dependency {
2910                   [Override ("Antecedent"), Min (1), Max (1), Description (
2911                    "The AutonomousSystem that scopes the BGP attributes.") ]
2912               CIM_AutonomousSystem REF Antecedent;
2913                   [Override ("Dependent"), Weak, Description (
2914                    "The BGP attributes defined in the context of the "
2915                    "AutonomousSystem.") ] 
2916               CIM_BGPAttributes REF Dependent;
2917           };
2918           
2919           // ==================================================================
2920 karl  1.2 //    FilteredBGPAttributes 
2921           // ==================================================================
2922                   [Association, Aggregation, Version ("2.6.0"), 
2923                    Description (
2924                    "This is a specialization of the Component aggregation, "
2925                    "which is used to define the set of BGP Attributes that are "
2926                    "used by a particular Routing Policy.") ] 
2927           class CIM_FilteredBGPAttributes : CIM_Component {
2928                   [Override ("GroupComponent"), Aggregate, Description (
2929                    "The RoutingPolicy, which aggregates a set of BGP "
2930                    "attributes.") ]
2931               CIM_RoutingPolicy REF GroupComponent;
2932                   [Override ("PartComponent"), Description (
2933                    "A BGP attribute, which is part-of the RoutingPolicy.") ]
2934               CIM_BGPAttributes REF PartComponent;
2935           };
2936           
2937           // ==================================================================
2938           //    BGPPathAttributes 
2939           // ==================================================================
2940                   [Version ("2.6.0"), Description (
2941 karl  1.2          "This class defines the per-path information used to process "
2942                    "specific BGP attribute information, as defined in the "
2943                    "bgp4PathAttrTable of RFC 1657.") ]
2944           class CIM_BGPPathAttributes : CIM_LogicalElement {
2945                   [Description (
2946                    "This property and its description are taken directly from "
2947                    "RFC 1657. The property represents a sequence of AS path "
2948                    "segments. Each AS path segment is represented by the "
2949                    "tuple: \n"
2950                    "     <type, length, value>"
2951                    "\n\n"
2952                    "The type is a 1-octet field which has two possible values: \n"
2953                    " 1 = AS_SET \n"
2954                    " 2 = AS_SEQUENCE \n"
2955                    "An AS_SET is an unordered set of ASs representing the path "
2956                    "that an UPDATE message has traversed, and an AS_SEQUENCE is "
2957                    "an ordered set of ASs representing the path that an UPDATE "
2958                    "message has traversed. "
2959                    "\n\n"
2960                    "The length is a 1-octet field containing the number of ASs "
2961                    "in the value field. "
2962 karl  1.2          "\n\n"
2963                    "The value field contains one or more AS numbers, each AS is "
2964                    "represented in the octet string as a pair of octets "
2965                    "according to the following algorithm: "
2966                    "    first-byte-of-pair = ASNumber / 256; "
2967                    "    second-byte-of-pair = ASNumber & 255;"
2968                    "\n\n"
2969                    "This property is mapped from the bgp4PathAttrASPathSegment "
2970                    "MIB variable, which is an OctetString. Its length is "
2971                    "defined as a minimum of 2 and a maximum of 255 octets."),
2972                    ArrayType ("Indexed"),
2973                    Mappingstrings {
2974                     "MIB.IETF|RFC1657-MIB.bgp4PathAttrASPathSegment"} ]
2975               uint8 PathAttrASPathSegment[ ];
2976                   [Key, MaxLen (512), Description (
2977                    "A comma-separated list of AS numbers, as would be stored "
2978                    "in the value portion of the path segment in the "
2979                    "PathAttrASPathSegment property. This list can be ordered "
2980                    "or unordered.") ]
2981               string ASNumbers;
2982                   [Key, MaxLen (32), Description (
2983 karl  1.2          "This is the address of the border router that should be "
2984                    "used for the destination network."),
2985                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgp4PathAttrNextHop"} ]
2986               string PathAttrNextHop;
2987                   [Description (
2988                    "This is an enumeration that defines the ultimate origin of "
2989                    "the path information. The value 'IGP' means that the origin "
2990                    "is interior; the value 'EGP' means that it was learned via "
2991                    "an EGP; the value 'INCOMPLETE' means that the origin is "
2992                    "undetermined."),
2993                    ValueMap {"1", "2", "3"},
2994                    Values {"IGP", "EGP", "INCOMPLETE"},
2995                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgp4PathAttrOrigin"} ]
2996               uint16 PathAttrOrigin;
2997                   [Description (
2998                    "This metric is used to discriminate between multiple "
2999                    "adjacent autonomous systems. A value of -1 indicates the "
3000                    "absence of this attribute. The range of this attribute "
3001                    "is defined to be -1 to 2147483647."),
3002                    Mappingstrings {
3003                     "MIB.IETF|RFC1657- MIB.bgp4PathAttrMultiExitDisc"} ]
3004 karl  1.2     sint32 PathAttrMultiExitDisc;
3005                   [Description (
3006                    "This is the originating BGP4 speaker's degree of preference "
3007                    "for an advertised route. A value of -1 indicates the "
3008                    "absence of this attribute. The range of this attribute is "
3009                    "defined to be -1 to 2147483647."),
3010                    Mappingstrings {
3011                     "MIB.IETF|RFC1657-MIB.bgp4PathAttrLocalPref"} ]
3012               sint32 PathAttrLocalPref;
3013                   [Description (
3014                    "This is an enumeration that defines whether or not the "
3015                    "local system has selected a less specific route without "
3016                    "selecting a more specific route. There are two values, 1 "
3017                    "and 2, indicating that a less specific route has not and "
3018                    "has been selected, respectively. This is a 32-bit integer "
3019                    "to correspond to the IETF MIB."),
3020                    ValueMap {"1", "2"},
3021                    Values {"Less Specific Not Selected",
3022                     "Less Specific Selected"},
3023                    Mappingstrings {
3024                     "MIB.IETF|RFC1657- MIB.bgp4PathAttrAtomicAggregate"} ]
3025 karl  1.2     uint32 PathAttrAtomicAggregate;
3026                   [Description (
3027                    "This is the AS number of the last BGP4 speaker that "
3028                    "performed route aggregation. A value of 0 indicates the "
3029                    "absence of this attribute. The range of this attribute is "
3030                    "defined to be 0 to 65535."),
3031                    Mappingstrings {
3032                     "MIB.IETF|RFC1657- MIB.bgp4PathAttrAggregatorAS"} ]
3033               uint16 PathAttrAggregatorAS; 
3034                   [Description (
3035                    "This is the IP address of the last BGP4 speaker that "
3036                    "performed route aggregation. A value of 0.0.0.0 indicates "
3037                    "the absence of this attribute."),
3038                    Mappingstrings {
3039                     "MIB.IETF|RFC1657- MIB.bgp4PathAttrAggregatorAddr"} ]
3040               string PathAttrAggregatorAddr;
3041                   [Description (
3042                    "This is the degree of preference calculated by the "
3043                    "receiving BGP4 speaker for an advertised route. A value of "
3044                    "-1 indicates the absence of this attribute. The range of "
3045                    "this attribute is defined to be -1 to 2147483647."),
3046 karl  1.2          Mappingstrings {
3047                     "MIB.IETF|RFC1657- MIB.bgp4PathAttrCalcLocalPref"} ]
3048               sint16 PathAttrCalcLocalPref;
3049                   [Description (
3050                    "This is an indication of whether or not this route was "
3051                    "chosen as the best BGP4 route. There are three possible "
3052                    "values, 0 (Unknown), 1 (FALSE) and 2 (TRUE)."),
3053                    ValueMap {"0", "1", "2"},
3054                    Values {"Unknown", "False", "True"}, 
3055                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgp4PathAttrBest"} ]
3056               uint16 PathAttrBest;
3057                   [Description (
3058                    "This contains one or more path atributes not understood by "
3059                    "this BGP4 speaker. The MIB variable is an OctetString, and "
3060                    "contains a 1-octet length field and up to 254 additional "
3061                    "octets of data. The length is placed in a separate "
3062                    "attribute of this class, PathAttrUnknownNumber."),
3063                    ModelCorrespondence { 
3064                     "CIM_BGPPathAttributes.PathAttrUnknownNumber"},
3065                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgp4PathAttrUnknown"} ]
3066               string PathAttrUnknown[ ];
3067 karl  1.2         [Description (
3068                    "The MIB variable is an OctetString, and contains a 1-octet "
3069                    "length field and up to 255 additional octets of data. The "
3070                    "length is placed in this attribute."),
3071                    ModelCorrespondence { 
3072                     "CIM_BGPPathAttributes.PathAttrUnknown"},
3073                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgp4PathAttrUnknown"} ]
3074               uint16 PathAttrUnknownNumber;
3075           };
3076           
3077           // ==================================================================
3078           //    BGPAttributesForRoute
3079           // ==================================================================
3080                   [Association, Version ("2.6.0"), Description (
3081                    "This defines the attributes that are transmitted between "
3082                    "BGP peers on a per-route basis.") ] 
3083           class CIM_BGPAttributesForRoute : CIM_Dependency {
3084                   [Override ("Antecedent"), Max (1), Description (
3085                    "The BGPPathAttribute object that may be associated with "
3086                    "a BGP route.") ]
3087               CIM_BGPPathAttributes REF Antecedent;
3088 karl  1.2         [Override ("Dependent"), Max (1), Description (
3089                    "The BGPIPRoute that may have an associated set of "
3090                    "per-peer attributes.") ]
3091               CIM_BGPIPRoute REF Dependent;
3092                   [Description (
3093                    "This defines the IP address of the peer where the path "
3094                    "information was learned."),
3095                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgp4PathAttrPeer"} ]
3096               string PathAttrPeer;
3097                   [Description (
3098                    "This defines the length in bits of the IP address prefix "
3099                    "in the Network Layer Reachability information field. The "
3100                    "range of this attribute is defined to be 0 to 32."),
3101                    Mappingstrings {
3102                     "MIB.IETF|RFC1657- MIB.bgp4PathAttrIpAddrPrefixLen"} ]
3103               uint8 PathAttrIPAddrPrefixLen; 
3104                   [Description (
3105                    "An IP address prefix in the Network Layer Reachability "
3106                    "Information field. This object is an IP address "
3107                    "containing the prefix with length specified by the "
3108                    "PathAttrIpAddrPrefixLen attribute."),
3109 karl  1.2          ModelCorrespondence {
3110                     "CIM_BGPPathAttributes.PathAttrIpAddrPrefixLen"},
3111                    Mappingstrings {
3112                     "MIB.IETF|RFC1657- MIB.bgp4PathAttrIpAddrPrefix"} ]
3113               string PathAttrIPAddrPrefix; 
3114           };
3115           
3116           // ==================================================================
3117           //    BGPServiceAttributes 
3118           // ==================================================================
3119                   [Association, Aggregation, Version ("2.6.0"), 
3120                    Description (
3121                    "This is a specialization of the Component aggregation. This "
3122                    "aggregation defines the set of BGP Attributes that are "
3123                    "transmitted in per-path UPDATE messages.") ] 
3124           class CIM_BGPServiceAttributes : CIM_Component {
3125                   [Override ("GroupComponent"), Aggregate, Max (1),
3126                    Description (
3127                    "The BGPService that aggregates BGP attributes as part of "
3128                    "its routing information.") ]
3129               CIM_BGPService REF GroupComponent;
3130 karl  1.2         [Override ("PartComponent"), Min (1), Max (1), 
3131                    Description (
3132                    "The BGP attribute, which are part-of the BGP UPDATE "
3133                    "message.") ]
3134               CIM_BGPPathAttributes REF PartComponent;
3135           };
3136           
3137           // ===================================================================
3138           //     SwitchService
3139           // ===================================================================
3140                   [Version ("2.6.0"), Description (
3141                    "Generic switch (bridging) service class. Additional "
3142                    "switching functions are incorporated as subordinate "
3143                    "services related to this class via ServiceComponent "
3144                    "associations.") ]  
3145           class CIM_SwitchService : CIM_ForwardingService {
3146                   [MaxLen(32), Description (
3147                    "Address used by this SwitchService when it must be "
3148                    "uniquely identified. For an ethernet bridge, the MAC "
3149                    "Address serves as the BridgeAddress.  When concatenated with "
3150                    "a SpanningTreeService Priority, a unique bridge identifier "
3151 karl  1.2          "results. The MAC address is formatted as twelve "
3152                    "hexadecimal digits (e.g., \"010203040506\"), with each "
3153                    "pair representing one of the six octets of the MAC address "
3154                    "in \"canonical\" bit order according to RFC 2469."
3155                    "In other scenarios, like Ipv6, the address is formatted as "
3156                    "\"ffff:ffff:ffff:ffff\"."),
3157                    ModelCorrespondence {"CIM_SwitchService.BridgeAddressType"},
3158                    Mappingstrings { 
3159                     "MIB.IETF|RFC1493- MIB.dot1dBaseBridgeAddress"}  ] 
3160               string BridgeAddress; 
3161                   [Description (
3162                    "The number of switch ports controlled by this "
3163                    "switching service.") , 
3164                    Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dBaseNumPorts"} ] 
3165               uint16 NumPorts ;
3166                   [Description (
3167                    "Indicates what type of switching service can be "
3168                    "performed."), 
3169                    ValueMap {"1", "2", "3", "4"}, 
3170                    Values {"Unknown", "Transparent-only", "SourceRoute-only",
3171                     "SRT"},   
3172 karl  1.2          Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dBaseType"} ] 
3173               uint8 BridgeType ;
3174                   [Description (
3175                    "BridgeAddressType defines the type of addressing scheme used "
3176                    "for this Bridge and its BridgeAddress property."),
3177                    ValueMap {"1", "2", "3", "4", "5"}, 
3178                    Values {"Other", "IPv4", "IPv6", "MAC", 
3179                     "MAC + Spanning Tree Priority"}, 
3180                    ModelCorrespondence {"CIM_SwitchingService.BridgeAddress"} ]
3181               uint16 BridgeAddressType;
3182           };
3183           
3184           // ===================================================================
3185           //     SwitchPort
3186           // ===================================================================
3187                   [Version ("2.6.0"), Description (
3188                    "Switch Port from which frames are received "
3189                    "and out which they are transmitted.") ] 
3190           class CIM_SwitchPort : CIM_ProtocolEndpoint {
3191                   [Description (
3192                    "Numeric identifier for a switch port."),
3193 karl  1.2          Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dPort"} ]
3194               uint16 PortNumber;
3195           };
3196           
3197           // ===================================================================
3198           //     SwitchesAmong
3199           // ===================================================================
3200                   [Association, Version ("2.6.0"), Description (
3201                    "A SwitchService switches frames between SwitchPorts. "
3202                    "This association makes that relationship explicit.") ]
3203           class CIM_SwitchesAmong : CIM_ForwardsAmong {
3204                   [Override ("Antecedent"),
3205                    Description ("The switch port.") ]
3206               CIM_SwitchPort REF Antecedent;
3207                   [Override ("Dependent"),  Max (1),
3208                    Description ("The switching service.") ]
3209               CIM_SwitchService REF Dependent;
3210           };
3211           
3212           // ===================================================================
3213           //     Switchable
3214 karl  1.2 // ===================================================================
3215                   [Association, Version ("2.6.0"), Description (
3216                    "A switch port has a LANEndpoint that is "
3217                    "exposed via this relationship.") ] 
3218           class CIM_Switchable : CIM_BindsToLANEndpoint {
3219                   [Override ("Antecedent"), Max (1),
3220                    Description ("The switch port.") ]
3221               CIM_LANEndpoint REF Antecedent;
3222                   [Override ("Dependent"), Max (1),
3223                    Description ("The LAN endpoint.") ]
3224               CIM_SwitchPort REF Dependent;
3225           };
3226           
3227           // ===================================================================
3228           //     TransparentBridgingService
3229           // ===================================================================
3230                   [Version ("2.6.0"), Description (
3231                    "This service class represents the learning/transparent "
3232                    "bridging aspect of switch service.") ]
3233           class CIM_TransparentBridgingService : CIM_Service {
3234                   [Description (
3235 karl  1.2          "The timeout period in seconds for aging out "
3236                    "dynamically learned forwarding information. "
3237                    "802.1D-1990 recommends a default of 300 seconds."),
3238                    Units("Seconds"), 
3239                    Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dTpAgingTime"} ]
3240               uint32 AgingTime;
3241                   [Description (
3242                    "Filtering Database Identifier. Used by VLAN-aware "
3243                    "switch having more than one filtering database."),
3244                    Mappingstrings {"MIB.IETF|RFC????-MIB.dot1qFdbId"} ]
3245               uint32 FID;
3246           };
3247           
3248           // ===================================================================
3249           //     SpanningTreeService
3250           // ===================================================================
3251                   [Version ("2.6.0"), Description (
3252                    "This service class represents the capability of a switch "
3253                    "to participate in the distributed construction of a "
3254                    "spanning tree.") ] 
3255           class CIM_SpanningTreeService : CIM_Service {
3256 karl  1.2         [Description (
3257                    "The version of the spanning tree protocol "
3258                    "used by the switch."),
3259                    ValueMap {"1", "2", "3"},
3260                    Values {"Unknown", "DEC LB100", "IEEE 802d"},
3261                    Mappingstrings {
3262                     "MIB.IETF|RFC1493- MIB.dot1dStpProtocolSpecification"} ]
3263               uint16 ProtocolSpec;
3264                   [Description (
3265                    "The format of the priority bits are the first two octets "
3266                    "of the 8-octet long Bridge ID. The other (last) 6 octets of "
3267                    "the Bridge ID are given by the value of the Bridge Address. "
3268                    "\n\n"
3269                    "A priority that can be assigned to the switch for use in "
3270                    "constructing the spanning tree. The unique identifier for "
3271                    "a switch is constructed by concatenating the MAC address "
3272                    "associated with the switch for spanning tree operations "
3273                    "to the two-byte priority. Choice of the priority value "
3274                    "influences election of the root bridge."),
3275                    Mappingstrings {"MIB.IETF|RFC1493- MIB.dot1dStpPriority"} ]
3276               uint16 Priority;
3277 karl  1.2         [MaxLen(16), Description (
3278                    "The Bridge ID (Priority + MAC Address) of the root bridge."
3279                    "\n\n"
3280                    "The format of the priority bits are the first two octets of "
3281                    "the 8-octet long Bridge ID. The other (last) 6 octets of the "
3282                    "Bridge ID are given by the value of the Bridge Address. "
3283                    "Note that the MAC address is formatted as twelve "
3284                    "hexadecimal digits (e.g., \"010203040506\"), with each "
3285                    "pair representing one of the six octets of the MAC address "
3286                    "in \"canonical\" bit order according to RFC 2469."),
3287                    Mappingstrings {
3288                     "MIB.IETF|RFC1493-MIB.dot1dStpDesignatedRoot"} ]
3289               string DesignatedRoot;
3290                   [Description (
3291                    "The cost of the path from the switch to the root."),
3292                    Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dStpRootCost"} ]
3293               uint16 RootCost;
3294                   [Description (
3295                    "The port number of the port having the lowest cost path "
3296                    "to the root bridge."),
3297                    Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dStpRootPort"} ]
3298 karl  1.2     uint16 RootPort;
3299                   [Description (
3300                    "The current value for the maximum age of Spanning Tree "
3301                    "information before discard, as learned from the network."),
3302                    Units ("Hundredths of Seconds"),
3303                    Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dStpMaxAge"} ]
3304               uint32 MaxAge;
3305                   [Description (
3306                    "The current value of the interval between transmission "
3307                    "of bridge PDUs by the switch on any port for which it is "
3308                    "the spanning tree root or trying to become so, as learned "
3309                    "from the network."),
3310                    Units ("Hundredths of Seconds"),
3311                    Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dStpHelloTime"} ]
3312               uint32 HelloTime;
3313                   [Description (
3314                    "The minimum interval between transmission of bridge PDUs "
3315                    "through a given port, as learned from the network."),
3316                    Units ("Hundredths of Seconds"),
3317                    Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dStpHoldTime"} ]
3318               uint32 HoldTime;
3319 karl  1.2         [Description (
3320                    "The time spent by a port in the listening state before "
3321                    "transitioning to the learning state and in the learning "
3322                    "state before transitioning to the forwarding state, as "
3323                    "learned from the network. This value is also used during "
3324                    "the period of a topology change as the maximum age of "
3325                    "Spanning Tree information before discard."),
3326                    Units ("Hundredths of Seconds"),
3327                    Mappingstrings {
3328                     "MIB.IETF|RFC1493-MIB.dot1dStpForwardDelay"} ]
3329               uint32 ForwardDelay;
3330                   [Description (
3331                    "The MaxAge parameter to be used by all switches in the "
3332                    "network if this switch becomes the root."),
3333                    Units ("Hundredths of Seconds"),
3334                    Mappingstrings {
3335                     "MIB.IETF|RFC1493-MIB.dot1dStpBridgeMaxAge"} ]
3336               uint32 BridgeMaxAge;
3337                   [Description (
3338                    "The HelloTime parameter to be used by all switches in the "
3339                    "network if this switch becomes the root."),
3340 karl  1.2          Units ("Hundredths of Seconds"),
3341                    Mappingstrings {
3342                     "MIB.IETF|RFC1493-MIB.dot1dStpBridgeHelloTime"} ]
3343               uint32 BridgeHelloTime;
3344                   [Description (
3345                    "The ForwardDelay parameter to be used by all switches in "
3346           	   "the network if this switch becomes the root."),
3347                    Units ("Hundredths of Seconds"),
3348                    Mappingstrings {
3349                     "MIB.IETF|RFC1493- MIB.dot1dStpBridgeForwardDelay"} ]
3350               uint32 BridgeForwardDelay;
3351                   [Description (
3352                    "MAC address used by the spanning tree service when it "
3353                    "must be uniquely identified. When concatenated with a "
3354                    "SpanningTreeService Priority, a unique bridge identifier "
3355                    "results. This property is defined for use of switches "
3356                    "supporting multiple spanning tree services. "
3357                    "\n\n"
3358                    "Note that the MAC address is formatted as twelve "
3359                    "hexadecimal digits (e.g., \"010203040506\"), with each "
3360                    "pair representing one of the six octets of the MAC address "
3361 karl  1.2          "in \"canonical\" bit order according to RFC 2469.") ]
3362               string SpanningTreeBridgeAddress;
3363           };
3364           
3365           // ===================================================================
3366           //     SwitchPortSpanningTree
3367           // ===================================================================
3368                   [Association,
3369                    Version ("2.6.0"), Description (
3370                    "A switch participating in the spanning tree maintains "
3371                    "spanning-tree specific information about each port "
3372                    "whose forwarding is determined by the spanning tree. "
3373                    "This association represents that information.") ] 
3374           class CIM_SwitchPortSpanningTree : CIM_ServiceSAPDependency {
3375                   [Override ("Antecedent"), 
3376                    Description ("The switch port.") ]
3377               CIM_SwitchPort REF Antecedent;
3378                   [Override ("Dependent"),
3379                    Description ("The spanning tree service.") ]
3380               CIM_SpanningTreeService REF Dependent;
3381                   [Description (
3382 karl  1.2          "The priority assigned to the port. Contained in "
3383                    "the first octet of the two-octet port ID; the other "
3384                    "octet is the port number."),
3385                    Mappingstrings {
3386                     "MIB.IETF|RFC1493-MIB.dot1dStpPortPriority"} ]
3387               uint8 Priority;
3388                   [Description (
3389                    "The current state of the port as determined by the "
3390                    "spanning tree protocol."),
3391                    ValueMap {"1", "2", "3", "4", "5", "6"},
3392                    Values {"Disabled", "Blocking", "Listening", "Learning",
3393                     "Forwarding", "Broken"},
3394                    Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dStpPortState"} ]
3395               uint16 State;
3396                   [Description (
3397                    "The enabled/disabled status of the port."),
3398                    ValueMap {"1", "2"},
3399                    Values {"Enabled", "Disabled"},
3400                    Mappingstrings {
3401                     "MIB.IETF|RFC1493-MIB.dot1dStpPortEnable"} ]
3402               uint16 Enable;
3403 karl  1.2         [Description (
3404                    "The contribution of this port to the path cost of "
3405                    "paths towards the spanning tree root which include "
3406                    "this port."),
3407                    Mappingstrings {
3408                     "MIB.IETF|RFC1493-MIB.dot1dStpPortPathCost"} ]
3409               uint16 PathCost;
3410                   [Description (
3411                    "The bridge identifier of the root bridge for the segment "
3412                    "to which the port is attached, as transmitted by the "
3413                    "designated bridge for the segment."),
3414                    Mappingstrings {
3415                     "MIB.IETF|RFC1493- MIB.dot1dStpPortDesignatedRoot"} ]
3416               string DesignatedRoot;
3417                   [Description (
3418                    "The cost of the path to the root offered by the "
3419                    "designated bridge for the segment."),
3420                    Mappingstrings {
3421                     "MIB.IETF|RFC1493- MIB.dot1dStpPortDesignatedCost"} ]
3422               uint16 DesignatedCost;
3423                   [Description (
3424 karl  1.2          "The bridge identifier of the designated bridge for the "
3425                    "segment to which the port is attached."),
3426                    Mappingstrings {
3427                     "MIB.IETF|RFC1493- MIB.dot1dStpPortDesignatedBridge"} ]
3428               string DesignatedBridge;
3429                   [Description (
3430                    "The port identifier of the port on the designated bridge "
3431                    "serving the segment to which the port is attached."),
3432                    Mappingstrings {
3433                     "MIB.IETF|RFC1493- MIB.dot1dStpPortDesignatedPort"} ]
3434               uint16 DesignatedPort;
3435           };
3436           
3437           // ===================================================================
3438           //     DynamicForwardingEntry
3439           // ===================================================================
3440                   [Version ("2.6.0"), Description (
3441                    "A DynamicForwardingEntry represents an entry in the "
3442                    "forwarding (filtering) database associated with the "
3443                    "transparent bridging service.") ]  
3444           class CIM_DynamicForwardingEntry : CIM_LogicalElement {
3445 karl  1.2         [Propagated("CIM_System.CreationClassName"), 
3446                    Key, MaxLen (256),
3447                    Description ("The scoping System's CreationClassName.") ]
3448               string SystemCreationClassName;
3449                   [Propagated("CIM_System.Name"),
3450                    Key, MaxLen (256),
3451                    Description ("The scoping System's Name.") ]
3452               string SystemName;
3453                   [Propagated("CIM_Service.CreationClassName"), 
3454                    Key, MaxLen (256),
3455                    Description ("The scoping Service's CreationClassName.") ]
3456               string ServiceCreationClassName;
3457                   [Propagated("CIM_Service.Name"),
3458                    Key, MaxLen (256),
3459                    Description ("The scoping Service's Name.") ]
3460               string ServiceName;
3461                   [Key, MaxLen (256),
3462                    Description (
3463                    "CreationClassName indicates the name of the class or the "
3464                    "subclass used in the creation of an instance. When used "
3465                    "with the other key properties of this class, this property "
3466 karl  1.2          "allows all instances of this class and its subclasses to "
3467                    "be uniquely identified.") ]
3468               string CreationClassName;
3469                   [Key, MaxLen (6), Description (
3470                    "Unicast MAC address for which the transparent bridging "
3471                    "service has forwarding and/or filtering information. "
3472                    "\n\n"
3473                    "Note that the MAC address is formatted as twelve "
3474                    "hexadecimal digits (e.g., \"010203040506\"), with each "
3475                    "pair representing one of the six octets of the MAC address "
3476                    "in \"canonical\" bit order according to RFC 2469."),
3477                    Mappingstrings {
3478                     "MIB.IETF|RFC1493-MIB.dot1dTpFdbAddress"} ] 
3479               string MACAddress;
3480                   [Description (
3481                    "The status of the entry."),
3482                    ValueMap {"1", "2", "3", "4", "5"},
3483                    Values {"Other", "Invalid", "Learned", "Self", "Mgmt"},
3484                    Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dTpFdbStatus"} ]
3485               uint16 DynamicStatus;
3486           };
3487 karl  1.2 
3488           // ==================================================================
3489           //    TransparentBridgingDynamicForwarding
3490           // ==================================================================
3491                   [Association,
3492                    Version ("2.6.0"), Description (
3493                    "This association links an instance of the transparent "
3494                    "bridging service to the entries of its forwarding database. "
3495                    "The forwarding database is weak to the service.") ]  
3496           class CIM_TransparentBridgingDynamicForwarding : CIM_Dependency {
3497                   [Override ("Antecedent"), Min (1), Max (1),
3498                    Description ("The transparent bridging service.") ]
3499               CIM_TransparentBridgingService REF Antecedent;
3500                   [Override ("Dependent"), Weak, Description (
3501                    "Dynamic Forwarding Entry of forwarding database.") ] 
3502               CIM_DynamicForwardingEntry REF Dependent;
3503           };
3504           
3505           // ==================================================================
3506           //    SwitchPortDynamicForwarding
3507           // ==================================================================
3508 karl  1.2         [Association,
3509                    Version ("2.6.0"), Description (
3510                    "This association links a dynamic forwarding entry "
3511                    "and the switch port to which the entry applies.") ] 
3512           class CIM_SwitchPortDynamicForwarding : CIM_Dependency {
3513                   [Override ("Antecedent"), Min (1), Max (1),
3514                    Description ("The switch port.") ]
3515               CIM_SwitchPort REF Antecedent;
3516                   [Override ("Dependent"), Description (
3517                    "Dynamic Forwarding Entry of forwarding database.") ] 
3518               CIM_DynamicForwardingEntry REF Dependent;
3519           };
3520           
3521           // ===================================================================
3522           //     StaticForwardingEntry
3523           // ===================================================================
3524                   [Version ("2.6.0"), Description (
3525                    "A StaticForwardingEntry represents an entry in the "
3526                    "static (destination-address filtering) database associated "
3527                    "with the switch service.") ]
3528           class CIM_StaticForwardingEntry : CIM_LogicalElement {
3529 karl  1.2         [Propagated("CIM_System.CreationClassName"), 
3530                    Key, MaxLen (256),
3531                    Description ("The scoping System's CreationClassName.") ]
3532               string SystemCreationClassName;
3533                   [Propagated("CIM_System.Name"),
3534                    Key, MaxLen (256),
3535                    Description ("The scoping System's Name.") ]
3536               string SystemName;
3537                   [Propagated("CIM_Service.CreationClassName"), 
3538                    Key, MaxLen (256),
3539                    Description ("The scoping Service's CreationClassName.") ]
3540               string ServiceCreationClassName;
3541                   [Propagated("CIM_Service.Name"),
3542                    Key, MaxLen (256),
3543                    Description ("The scoping Service's Name.") ]
3544               string ServiceName;
3545                   [Key, MaxLen (256),
3546                    Description (
3547           	   "CreationClassName indicates the name of the class or the "
3548           	   "subclass used in the creation of an instance. When used "
3549           	   "with the other key properties of this class, this property "
3550 karl  1.2 	   "allows all instances of this class and its subclasses to "
3551           	   "be uniquely identified.") ]
3552               string CreationClassName;
3553                   [Key, MaxLen (6), Description (
3554                    "Destination MAC address (unicast, multicast or broadcast) "
3555                    "to which the filtering information applies. "
3556                    "\n\n"
3557                    "Note that the MAC address is formatted as twelve "
3558                    "hexadecimal digits (e.g., \"010203040506\"), with each "
3559                    "pair representing one of the six octets of the MAC address "
3560                    "in \"canonical\" bit order according to RFC 2469."),
3561                    Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dStaticAddress"} ] 
3562               string MACAddress;
3563                   [Description (
3564                    "The status of the entry."),
3565                    ValueMap {"1", "2", "3", "4", "5"},
3566                    Values {"Other", "Invalid", "Permanent", "DeleteOnReset",
3567                     "DeleteOnTimeout"},
3568                    Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dStaticStatus"} ]
3569               uint16 StaticStatus;
3570                   [Description (
3571 karl  1.2          "The ports to which frames with the destination MAC "
3572                    "address arriving on the port represented by the "
3573                    "SwitchPortStaticForwarding association are allowed "
3574                    "to be forwarded.") ]
3575               uint16 AllowedToGo[];
3576           };
3577           
3578           // ==================================================================
3579           //    TransparentBridgingStaticForwarding
3580           // ==================================================================
3581                   [Association,
3582                    Version ("2.6.0"), Description (
3583                    "This association links an instance of the transparent "
3584                    "bridging service to the entries of its static "
3585                    "(destination-address filtering) database.") ] 
3586           class CIM_TransparentBridgingStaticForwarding : CIM_Dependency {
3587                   [Override ("Antecedent"), Min (1), Max (1),
3588                    Description ("The transparent bridging service.") ]
3589               CIM_TransparentBridgingService REF Antecedent;
3590                   [Override ("Dependent"), Weak, Description (
3591                    "Static Forwarding Entry of forwarding database.") ] 
3592 karl  1.2     CIM_StaticForwardingEntry REF Dependent;
3593           };
3594           
3595           // ==================================================================
3596           //    SwitchPortStaticForwarding
3597           // ==================================================================
3598                   [Association,
3599                    Version ("2.6.0"), Description (
3600                    "This association links a static database entry "
3601                    "and the switch port to which the entry applies.") ]  
3602           class CIM_SwitchPortStaticForwarding : CIM_Dependency {
3603                   [Override ("Antecedent"), Min (1),
3604                    Description ("The switch port.") ]
3605               CIM_SwitchPort REF Antecedent;
3606                   [Override ("Dependent"), Description (
3607                    "Static Forwarding Entry of static database.") ] 
3608               CIM_StaticForwardingEntry REF Dependent;
3609           };
3610           
3611           // ==================================================================
3612           //    SwitchServiceTransparentBridging
3613 karl  1.2 // ==================================================================
3614                   [Association, Aggregation, Version ("2.6.0"), 
3615                    Description (
3616                    "An association linking SwitchService to a component "
3617                    "TransparentBridgingService. The cardinality of the "
3618                    "TransparentBridgingService is 0..1 for a VLAN-unaware "
3619                    "switch.") ] 
3620           class CIM_SwitchServiceTransparentBridging : CIM_ServiceComponent {
3621                   [Override ("GroupComponent"), Aggregate, Min (1),
3622                    Description ("The parent service.") ]
3623               CIM_SwitchService REF GroupComponent;
3624                   [Override ("PartComponent"),
3625                    Description ("The component service.") ] 
3626               CIM_TransparentBridgingService REF PartComponent;
3627           };
3628           
3629           // ==================================================================
3630           //    SwitchServiceSpanningTree
3631           // ==================================================================
3632                   [Association, Aggregation, Version ("2.6.0"), 
3633                    Description (
3634 karl  1.2          "An association linking SwitchService to a component "
3635                    "SpanningTreeService. The cardinality of the "
3636                    "SpanningTreeService is 0..1 for a VLAN-unaware "
3637                    "switch.") ] 
3638           class CIM_SwitchServiceSpanningTree : CIM_ServiceComponent {
3639                   [Override ("GroupComponent"), Aggregate, Min (1),
3640                    Description ("The parent service.") ]
3641               CIM_SwitchService REF GroupComponent;
3642                   [Override ("PartComponent"),
3643                    Description ("The component service.") ] 
3644               CIM_SpanningTreeService REF PartComponent;
3645           };
3646           
3647           // ===================================================================
3648           //     SourceRoutingService
3649           // ===================================================================
3650                   [Version ("2.6.0"), Description (
3651                    "SourceRoutingService represents the capability of a switch "
3652                    "to participate in the source routing of frames received "
3653                    "at its ports. It is a system-level Service that provides "
3654                    "and supports local switching only. For this reason, it is "
3655 karl  1.2          "not defined as a subclass of NetworkService. Instead, Source"
3656                    "RoutingService is aggregated into a higher level Network/"
3657                    "Forwarding/SwitchService through the SwitchServiceSource"
3658                    "Routing association.") ] 
3659           class CIM_SourceRoutingService : CIM_Service {
3660                   [Description (
3661                    "Indicates whether the bridge operates using older "
3662                    "3 bit length negotiation fields or the newer 6 bit "
3663                    "length field in its RIF."),
3664                    ValueMap {"1", "2"},
3665                    Values {"Mode3", "Mode6"},
3666                    Mappingstrings {"MIB.IETF|RFC1525-MIB.dot1dSrBridgeLfMode"} ] 
3667               uint16 BridgeLfMode;
3668           };
3669           
3670           // ==================================================================
3671           //    SwitchServiceSourceRouting
3672           // ==================================================================
3673                   [Association, Aggregation, Version ("2.6.0"), 
3674                    Description (
3675                    "An association linking SwitchService to a component "
3676 karl  1.2          "SourceRoutingService. The cardinality of the "
3677                    "SourceRoutingService is 0..1 for a VLAN-unaware "
3678                    "switch.") ] 
3679           class CIM_SwitchServiceSourceRouting : CIM_ServiceComponent {
3680                   [Override ("GroupComponent"), Aggregate, Min (1),
3681                    Description ("The parent service.") ]
3682               CIM_SwitchService REF GroupComponent;
3683                   [Override ("PartComponent"),
3684                    Description ("The component service.") ] 
3685               CIM_SourceRoutingService REF PartComponent;
3686           };
3687           
3688           // ==================================================================
3689           //    SwitchPortPair
3690           // ==================================================================
3691                   [Association, Version ("2.6.0"), Description (
3692                    "This association represents information regarding port "
3693                    "pairings that is used by the SourceRoutingService of a "
3694                    "switch.") ]
3695           class CIM_SwitchPortPair : CIM_SAPSAPDependency {
3696                   [Override ("Antecedent"), Min (1), Description (
3697 karl  1.2          "The lower numbered port.") ]
3698               CIM_SwitchPort REF Antecedent;
3699                   [Override ("Dependent"), Min (1), Description (
3700                    "The higher numbered port.") ]
3701               CIM_SwitchPort REF Dependent;
3702                   [Description (
3703                    "A bridge number that uniquely identifies the path "
3704                    "provided by this source routing bridge between the "
3705                    "segments connected to high and low ports. The purpose "
3706                    "of bridge number is to disambiguate between multiple paths "
3707                    "connecting the same two LANs."),
3708                    Mappingstrings {
3709                     "MIB.IETF|RFC1525-MIB.dot1dPortPairBridgeNum"} ]
3710               uint16 BridgeNum;
3711                   [Description (
3712                    "The state of dot1dPortPairBridgeNum. Writing "
3713                    "'invalid(3)' to this property removes the "
3714                    "association instance."),
3715                    ValueMap {"1", "2", "3"},
3716                    Values {"Enabled", "Disabled", "Invalid"},
3717                    Mappingstrings {
3718 karl  1.2           "MIB.IETF|RFC1525-MIB.dot1dPortPairBridgeState"} ]
3719               uint16 BridgeState;
3720           };
3721           
3722           // ===================================================================
3723           //     SwitchPortSourceRouting
3724           // ===================================================================
3725                   [Association, Version ("2.6.0"), Description (
3726                    "A switch capable of source routing maintains "
3727                    "source-routing specific information about each port. "
3728                    "This association represents that information.") ] 
3729           class CIM_SwitchPortSourceRouting : CIM_ServiceSAPDependency {
3730                   [Override ("Antecedent"), Description ("The switch port.") ]
3731               CIM_SwitchPort REF Antecedent;
3732                   [Override ("Dependent"), Max (1),
3733                    Description ("The source routing service.") ]
3734               CIM_SourceRoutingService REF Dependent;
3735                   [Description (
3736                    "The maximum number of routing descriptors allowed "
3737                    "in an All Paths or Spanning Tree Explorer frames."),
3738                    Mappingstrings {
3739 karl  1.2           "MIB.IETF|RFC1525-MIB.dot1dSrPortHopCount"} ]
3740               uint16 HopCount;
3741                   [Description (
3742                    "The segment number that uniquely identifies the "
3743                    "segment to which this port is connected. Current "
3744                    "source routing protocols limit this value to the "
3745                    "range: 0 through 4095. (The value 0 is used by "
3746                    "some management applications for special test "
3747                    "cases.) A value of 65535 signifies that no segment "
3748                    "number is assigned to this port."),
3749                    Mappingstrings {
3750                     "MIB.IETF|RFC1525-MIB.dot1dSrPortLocalSegment"} ]
3751               uint16 LocalSegment;
3752                   [Description (
3753                    "A bridge number uniquely identifies a bridge when "
3754                    "more than one bridge is used to span the same two "
3755                    "segments.  Current source routing protocols limit "
3756                    "this value to the range: 0 through 15. A value of "
3757                    "65535 signifies that no bridge number is assigned "
3758                    "to this bridge."),
3759                    Mappingstrings {
3760 karl  1.2           "MIB.IETF|RFC1525-MIB.dot1dSrPortBridgeNum"} ]
3761               uint16 BridgeNum;
3762                   [Description (
3763                    "The segment number that corresponds to the target "
3764                    "segment this port is considered to be connected to "
3765                    "by the switch.  Current source routing protocols "
3766                    "limit this value to the range: 0 through 4095. "
3767                    "(The value 0 is used by some management "
3768                    "applications for special test cases.) A value of "
3769                    "65535 signifies that no target segment is assigned "
3770                    "to this port."),
3771                    Mappingstrings {
3772                     "MIB.IETF|RFC1525-MIB.dot1dSrPortTargetSegment"} ]
3773               uint16 TargetSegment;
3774                   [Description (
3775                    "Determines how the port behaves when presented "
3776                    "with a Spanning Tree Explorer frame.  The value "
3777                    "'disabled(2)' indicates that the port will not "
3778                    "accept or send Spanning Tree Explorer packets; any "
3779                    "STE packets received will be silently discarded. "
3780                    "The value 'forced(3)' indicates the port will "
3781 karl  1.2          "always accept and propagate Spanning Tree Explorer "
3782                    "frames. This allows a manually configured "
3783                    "Spanning Tree for this class of packet to be "
3784                    "configured. Note that unlike transparent "
3785                    "bridging, this is not catastrophic to the network "
3786                    "if there are loops. The value 'auto-span(1)' can "
3787                    "only be returned by a bridge that both implements "
3788                    "the Spanning Tree Protocol and has use of the "
3789                    "protocol enabled on this port. The behavior of the "
3790                    "port for Spanning Tree Explorer frames is "
3791                    "determined by the value of the State property of "
3792                    "the SwitchPortSpanningTree association for the port. "
3793                    "If the port is in the 'forwarding' state, the frame "
3794                    "will be accepted or propagated.  Otherwise, it "
3795                    "will be silently discarded."),
3796                    ValueMap {"1", "2", "3"},
3797                    Values {"Auto-Span", "Disabled", "Forced"},
3798                    Mappingstrings {
3799                     "MIB.IETF|RFC1525-MIB.dot1dSrPortSTESpanMod"} ]
3800               uint16 STESpanMode;
3801           };
3802 karl  1.2 
3803           // ==================================================================
3804           //     VLAN
3805           // ==================================================================
3806                   [Version ("2.6.0"), Description (
3807                    "An instance of VLAN represents a VLAN within a switch. "
3808                    "In a particular switch, there should be an instance of VLAN "
3809                    "for every VLAN available in the switch. For example, in a "
3810                    "switch with port-based VLANs, if there are 16 VLANs to which "
3811                    "ports can be assigned (VLAN 1 through VLAN 16), there should "
3812                    "be an instance of CIM_VLAN for each of VLAN 1 through "
3813                    "VLAN 16."
3814                    "\n\n"
3815                    "VLAN inherits Name from ServiceAccessPoint. Use this for "
3816                    "the textual name of the VLAN, if there is one. Otherwise, "
3817                    "synthesize a textual name, e.g., VLAN 0003. (Consider "
3818                    "leading zero fill, as shown, to ensure that if the textual "
3819                    "VLAN names are extracted and presented by a management "
3820                    "applictions, the VLAN names will sort in the expected order. "
3821                    "It's irritating to see a list sorted "
3822                    "'VLAN 1, VLAN 10, VLAN 11, VLAN 2, VLAN 3...', "
3823 karl  1.2          "when it could have been "
3824                    "'VLAN 0001, VLAN 0002, ..., VLAN 0010, VLAN 0011, ....'.) "
3825                    "The numeric part of the name should be at least four "
3826                    "digits wide since 802.1Q specifies 4095 VLANs."
3827                    "\n\n"
3828                    "It is intended that VLAN be subclassed only if necessary "
3829                    "to add attributes. The type of the VLAN can be inferred from "
3830                    "the VLANService(s) with which the VLAN is associated "
3831                    "in the VLANFor association."
3832                    "\n\n"
3833                    "An instance of VLAN may be associated with more than one "
3834                    "VLANService. For example, there are switches that "
3835                    "support both 802.1Q VLANs and the vendor's proprietary "
3836                    "VLANs. In some such switches if a broadcast packet received "
3837                    "on a port in 802.1Q VLAN 5 will be transmitted from a port "
3838                    "in proprietary VLAN 5. In effect, there is only one VLAN 5, "
3839                    "and the type of port only determines the packet format for "
3840                    "tagged packets. In the case just described, only one "
3841                    "instance of CIM_VLAN should be instantiated for VLAN 5, and "
3842                    "it should be associated both with the 802.1Q VLANService "
3843                    "and the proprietary VLANService. "
3844 karl  1.2          "\n\n"
3845                    "In typical VLAN-aware switches, packets can be assigned to "
3846                    "a VLAN based on the port on which they are received " 
3847                    "(port-based VLANS), based on the source MAC address " 
3848                    "(MAC-based VLANs), or based on the value of a set of bits in "
3849                    "the packet (protocol-based VLANs). If it is desirable to "
3850                    "represent the VLAN assignment predicate for some MAC-based "
3851                    "VLAN switch, it will be necessary to subclass VLAN. The list "
3852                    "of MAC addresses associated with a VLAN would be an "
3853                    "attribute of the subclass. If it is desirable to represent"
3854                    "the VLAN assignment predicate in a protocol-based VLAN "
3855                    "switch, it will be necessary to subclass VLAN, "
3856                    "InboundVLAN, or both. If the predicate applies to all ports "
3857                    "in the switch, then only VLAN need be subclassed. If the "
3858                    "predicate may vary based on the port, then InboundVLAN must "
3859                    "be subclassed, and CIM_VLAN might have to be subclassed "
3860                    "as well.") ]
3861           class CIM_VLAN : CIM_ServiceAccessPoint {
3862                   [Description ("VLAN identifying number.") ]
3863               uint32 VLANNumber;
3864           };
3865 karl  1.2 
3866           // ==================================================================
3867           //     RelatedTransparentBridgingService
3868           // ==================================================================
3869                   [Association, Version ("2.6.0"), Description (
3870                    "The association between a VLAN and the forwarding database "
3871                    "(some use the term filtering database) used to determine "
3872                    "which port a packet should be transmitted on, given that it "
3873                    "is assigned to the VLAN and that it has a particular "
3874                    "destination MAC address. The TransparentBridgingService "
3875                    "represents a forwarding database.") ]
3876           class CIM_RelatedTransparentBridgingService : 
3877            CIM_ServiceSAPDependency {
3878                   [Override ("Antecedent") ]
3879               CIM_VLAN  REF Antecedent;
3880                   [Override ("Dependent"), Min (1), Max (1) ]
3881               CIM_TransparentBridgingService REF Dependent;
3882           };
3883           
3884           // ==================================================================
3885           //     CIM_RelatedSpanningTree
3886 karl  1.2 // ==================================================================
3887                   [Association, Version ("2.6.0"), Description (
3888                    "This association identifies the spanning tree in which "
3889                    "a forwarding database (TransparentBridgingService) is "
3890                    "nested.") ]
3891           class CIM_RelatedSpanningTree : CIM_ServiceServiceDependency {
3892                   [Override ("Antecedent") ]
3893               CIM_TransparentBridgingService REF Antecedent;
3894                   [Override ("Dependent"), Max (1) ]
3895               CIM_SpanningTreeService REF Dependent;
3896           };
3897           
3898           // ==================================================================
3899           //     InboundVLAN
3900           // ==================================================================
3901                   [Association, Version ("2.6.0"), Description (
3902                    "This association makes explicit the operational "
3903                    "dependencies of a SwitchPort when operating in a VLAN."
3904                    "\n\n"
3905                    "If there is an association between a particular "
3906                    "SwitchPort and a particular VLAN, then there is the "
3907 karl  1.2          "possibility that a packet received by the port will be "
3908                    "assigned to the VLAN (or if the packet already has a VLAN "
3909                    "tag, that the packet will not be dropped). If there is no "
3910                    "such association, then there is no possibility that a "
3911                    "packet received by the port will progress through the "
3912                    "switch having been assigned to the VLAN in question.") ]
3913           class CIM_InboundVLAN : CIM_SAPSAPDependency {
3914                   [Override ("Antecedent") ]
3915               CIM_VLAN REF Antecedent;
3916                   [Override ("Dependent") ]
3917               CIM_SwitchPort REF Dependent;
3918                   [Description (
3919                    "If true, packets already tagged with this VLAN number will "
3920                    "be accepted when arriving at this port. For example, if "
3921                    "there is an InboundVLAN association between port 12 and "
3922                    "VLAN 7 for which Tagged is true, then if a packet tagged "
3923                    "with VLAN 7 arrives at port 12, the packet will be "
3924                    "accepted into the switch for further processing. If there "
3925                    "is no such association, then the packet will be dropped."
3926                    "\n\n"
3927                    "If false, it means that any untagged packets arriving at "
3928 karl  1.2          "this port MIGHT be classified into the associated VLAN. "
3929                    "If, for a particular SwitchPort, there is only one instance "
3930                    "of the association for which Tagged is false, then all "
3931                    "incoming untagged packets will be classified into that VLAN. "
3932                    "This is the typical configuration of a non-trunk port in a "
3933                    "switch implementing port-based VLANs. If there is more than "
3934                    "one such association instance, then the packet MIGHT be "
3935                    "classified into any one of them, based on some criterion "
3936                    "other than the identity of the switch port. For example, "
3937                    "in a MAC-based VLAN switch, the decision would be based on "
3938                    "the source MAC address. In a protocol-based VLAN switch, "
3939                    "the decision would be based on the values of some set of "
3940                    "bits in the packet. "
3941                    "\n\n"
3942                    "Note that the MAC address is formatted as twelve "
3943                    "hexadecimal digits (e.g., \"010203040506\"), with each "
3944                    "pair representing one of the six octets of the MAC address "
3945                    "in \"canonical\" bit order according to RFC 2469.") ]
3946               boolean Tagged;
3947                   [Description (
3948                    "Default should be true if untagged packets received by the "
3949 karl  1.2          "SwitchPort are assigned to the VLAN by default. For "
3950                    "802.1Q-compliant ports, the Default property should be "
3951                    "true on the association instance connecting a SwitchPort to "
3952                    "the CIM_VLAN corresponding to the port's PVID. Default "
3953                    "should never be true if Tagged is true -- it applies only "
3954                    "to untagged packets.") ]
3955               boolean Default;
3956           };
3957           
3958           // ==================================================================
3959           //     OutboundVLAN
3960           // ==================================================================
3961                   [Association, Version ("2.6.0"), Description (
3962                    "This association makes explicit the operational "
3963                    "dependencies of a SwitchPort when operating in a VLAN. "
3964                    "\n\n"
3965                    "If there is no instance of OutboundVLAN between a given "
3966                    "SwitchPort and CIM_VLAN, then any packet that has been "
3967                    "assigned to the VLAN and whose destination address is "
3968                    "associated with the port will be dropped by the switch "
3969                    "without being transmitted. Otherwise, the packet will be "
3970 karl  1.2          "transmitted.") ]
3971           class CIM_OutboundVLAN : CIM_SAPSAPDependency {
3972                   [Override ("Antecedent") ]
3973               CIM_VLAN REF Antecedent;
3974                   [Override ("Dependent") ]
3975               CIM_SwitchPort REF Dependent;
3976                   [Description (
3977                    "If Tagged is true, then the packet will be transmitted in "
3978                    "encapsulated form, tagged with the associated VLAN tag. If "
3979                    "Tagged is false, the packet will be trasmitted without any "
3980                    "VLAN tag.") ]
3981               boolean Tagged;
3982           };
3983           
3984           // ==================================================================
3985           //     VLANService
3986           // ==================================================================
3987                   [Abstract, Version ("2.6.0"), Description (
3988                    "VLANService represents the VLAN aspects of the function "
3989                    "performed by a switch. Some VLAN-aware devices participate "
3990                    "in protocols where VLAN information is propagated among "
3991 karl  1.2          "switches, e.g., GVRP in 802.1Q switches and VTP in Cisco "
3992                    "Catalyst switches. VLANService also represents the function "
3993                    "performed by the switch as a participant in such a protocol."
3994                    "\n\n"
3995                    "VLANService must be subclassed so that instances can be "
3996                    "distinguished by their class. If there is a name assigned to "
3997                    "a set of VLAN-aware switches, e.g., the VTP domain name in "
3998                    "Cisco Catalyst switches, use the Name attribute inherited "
3999                    "from CIM_Service to store the name."
4000                    "\n\n"
4001                    "A VLANService should be instantiated in a VLAN-aware switch "
4002                    "even if there is no GVRP-like protocol.") ] 
4003           class CIM_VLANService : CIM_Service {
4004           };
4005           
4006           // ==================================================================
4007           //     802dot1QVLANService
4008           // ==================================================================
4009                   [Version ("2.6.0"), Description (
4010                    "If a switch supports 802.1Q, an instance of this class "
4011                    "should be instantiated in the switch. If the switch "
4012 karl  1.2          "supports GVRP, this class represents the function that "
4013                    "the switch performs with respect to GVRP.") ]
4014           class CIM_802dot1QVLANService : CIM_VLANService {
4015           };
4016           
4017           // ==================================================================
4018           //     SwitchServiceVLAN
4019           // ==================================================================
4020                   [Association, Aggregation, Version ("2.6.0"), 
4021                    Description (
4022                    "An association linking SwitchService to a component "
4023                    "VLANService.") ] 
4024           class CIM_SwitchServiceVLAN : CIM_ServiceComponent {
4025                   [Override ("GroupComponent"), Aggregate, Min (1), Max (1) ]
4026               CIM_SwitchService REF GroupComponent;
4027                   [Override ("PartComponent") ]
4028               CIM_VLANService REF PartComponent;
4029           };
4030           
4031           // ==================================================================
4032           //     VLANFor
4033 karl  1.2 // ==================================================================
4034                   [Association, Version ("2.6.0"), Description(
4035                    "The VLAN Port used by the VLAN Service.") ]
4036           class CIM_VLANFor : CIM_ServiceSAPDependency {
4037                   [Override ("Antecedent") ]
4038               CIM_VLAN REF Antecedent;
4039                   [Override ("Dependent"), Min (1) ]
4040               CIM_VLANService REF Dependent;
4041           };
4042           
4043           // ===================================================================
4044           //     TransparentBridgingStatistics
4045           // ===================================================================
4046                   [Version ("2.6.0"), Description(
4047                    "Statistical information regarding the Transparent Bridging "
4048                    "Service.") ] 
4049           class CIM_TransparentBridgingStatistics : 
4050             CIM_ServiceStatisticalInformation {
4051                   [Counter, Description (
4052                    "The total number of Forwarding Database entries, "
4053                    "which have been or would have been learnt, but "
4054 karl  1.2          "have been discarded due to a lack of space to "
4055                    "store them in the Forwarding Database."),
4056                    Mappingstrings {
4057                     "MIB.IETF|RFC1493- MIB.dot1dTpLearnedEntryDiscards"} ] 
4058               uint32 LearnedEntryDiscards;
4059           };
4060           
4061           // ===================================================================
4062           //     SpanningTreeStatistics
4063           // ===================================================================
4064                   [Version ("2.6.0"), Description(
4065                    "Statistical information regarding the Spanning Tree "
4066                    "Service.") ]
4067           class CIM_SpanningTreeStatistics : CIM_ServiceStatisticalInformation {
4068                   [Description(
4069                    "The time since the last topology change was "
4070                    "detected by the switch."),
4071                    Units ("Hundredths of Seconds"),
4072                    Mappingstrings {
4073                     "MIB.IETF|RFC1493- MIB.dot1dStpTimeSinceTopologyChange"} ]
4074               uint32 TimeSinceTopologyChange;
4075 karl  1.2         [Counter, Description (
4076                    "The total number of topology changes detected by "
4077                    "the switch since the counter was last reset or "
4078                    "initialized."),
4079                    Mappingstrings {"MIB.IETF|RFC1493-MIB.dot1dStpTopChanges"} ] 
4080               uint32 TopChanges;
4081           };
4082           
4083           // ===================================================================
4084           //     SwitchPortStatistics
4085           // ===================================================================
4086                   [Version ("2.6.0"), Description (
4087                    "Statistical information regarding a generic switch port, "
4088                    "independent of the specific kind of switching done on "
4089                    "frames arriving at the port.") ] 
4090           class CIM_SwitchPortStatistics : CIM_SAPStatisticalInformation {
4091                   [Counter, Description (
4092                    "The number of frames discarded by this port due "
4093                    "to excessive transit delay through the bridge."),
4094                    Mappingstrings {
4095                     "MIB.IETF|RFC1493- MIB.dot1dBasePortDelayExceededDiscards"} ] 
4096 karl  1.2     uint32 DelayExceededDiscards;
4097                   [Counter, Description (
4098                    "The number of frames discarded by this port due "
4099                    "to an excessive size."),
4100                    Mappingstrings {
4101                     "MIB.IETF|RFC1493- MIB.dot1dBasePortMtuExceededDiscards"} ]
4102               uint32 MtuExceededDiscards;
4103           };
4104           
4105           // ===================================================================
4106           //     SwitchPortTransparentBridgingStatistics
4107           // ===================================================================
4108                   [Version ("2.6.0"), Description (
4109                    "Statistical information regarding a switch port, "
4110                    "at which transparent bridging is performed.") ]
4111           class CIM_SwitchPortTransparentBridgingStatistics : 
4112             CIM_SAPStatisticalInformation {
4113                   [Counter, Description (
4114                    "The number of frames that have been received by "
4115                    "the port from its segment. Note that a frame "
4116                    "is only counted if and only if it is for a "
4117 karl  1.2          "protocol being processed by the local bridging "
4118                    "function, including bridge management frames."),
4119                    Mappingstrings {
4120                     "MIB.IETF|RFC1493-MIB.dot1dTpPortInFrames"} ] 
4121               uint32 InFrames;
4122                   [Counter, Description (
4123                    "The number of frames that have been transmitted by "
4124                    "the port to its segment. Note that a frame "
4125                    "is only counted if and only if it is for a "
4126                    "protocol being processed by the local bridging "
4127                    "function, including bridge management frames."),
4128                    Mappingstrings {
4129                     "MIB.IETF|RFC1493-MIB.dot1dTpPortOutFrames"} ]
4130               uint32 OutFrames;
4131                   [Counter, Description (
4132                    "Count of valid frames received which were "
4133                    "discarded (i.e., filtered) by the Forwarding Process."),
4134                    Mappingstrings {
4135                     "MIB.IETF|RFC1493-MIB.dot1dTpPortInDiscards"} ]
4136               uint32 InDiscards;
4137           };
4138 karl  1.2 
4139           // ===================================================================
4140           //     SwitchPortSpanningTreeStatistics
4141           // ===================================================================
4142                   [Version ("2.6.0"), Description (
4143                    "Statistical information regarding a switch port "
4144                    "participating in the spanning tree.") ] 
4145           class CIM_SwitchPortSpanningTreeStatistics : 
4146             CIM_SAPStatisticalInformation {
4147                   [Counter, Description (
4148                    "The number of times the port has transitioned "
4149                    "from the Learning state to the Forwarding state."),
4150                    Mappingstrings {
4151                     "MIB.IETF|RFC1493- MIB.dot1dStpPortForwardTransitions"} ] 
4152               uint32 ForwardTransitions;
4153           };
4154           
4155           // ===================================================================
4156           //     SwitchPortSourceRoutingStatistics
4157           // ===================================================================
4158                   [Version ("2.6.0"), Description (
4159 karl  1.2          "Statistical information regarding a switch port "
4160                    "supporting source routing.") ] 
4161           class CIM_SwitchPortSourceRoutingStatistics : 
4162             CIM_SAPStatisticalInformation {
4163                   [Counter, Description (
4164                    "The number of Specifically Routed frames, also "
4165                    "referred to as Source Routed Frames, that have "
4166                    "been received from the segment attached to the port."),
4167                    Mappingstrings {
4168                     "MIB.IETF|RFC1525-MIB.dot1dSrPortSpecInFrames"} ]
4169               uint32 SpecInFrames;
4170                   [Counter, Description (
4171                    "The number of Specifically Routed frames, also "
4172                    "referred to as Source Routed Frames, that the "
4173                    "port has transmitted on its segment."),
4174                    Mappingstrings {
4175                     "MIB.IETF|RFC1525-MIB.dot1dSrPortSpecOutFrames"} ]
4176               uint32 SpecOutFrames;
4177                   [Counter, Description (
4178                    "The number of All Paths Explorer frames, also "
4179                    "referred to as All Routes Explorer frames, that "
4180 karl  1.2          "have been received by the port from its segment."),
4181                    Mappingstrings {
4182                     "MIB.IETF|RFC1525-MIB.dot1dSrPortApeInFrames"} ]
4183               uint32 ApeInFrames;
4184                   [Counter, Description (
4185                    "The number of all Paths Explorer Frames, also "
4186                    "referred to as All Routes Explorer frames, that "
4187                    "have been transmitted by the port on its segment."),
4188                    Mappingstrings {
4189                     "MIB.IETF|RFC1525-MIB.dot1dSrPortApeOutFrames"} ]
4190               uint32 ApeOutFrames;
4191                   [Counter, Description (
4192                    "The number of spanning tree explorer frames that "
4193                    "have been received by the port from its segment."),
4194                    Mappingstrings {
4195                     "MIB.IETF|RFC1525-MIB.dot1dSrPortSteInFrames"} ]
4196               uint32 SteInFrames;
4197                   [Counter, Description (
4198                    "The number of spanning tree explorer frames that "
4199                    "have been transmitted by the port on its segment."),
4200                    Mappingstrings {
4201 karl  1.2           "MIB.IETF|RFC1525-MIB.dot1dSrPortSteOutFrames"} ]
4202               uint32 SteOutFrames;
4203                   [Counter, Description (
4204                    "The number of explorer frames that have been "
4205                    "discarded by the port because the routing "
4206                    "descriptor field contained an invalid adjacent "
4207                    "segment value."),
4208                    Mappingstrings {
4209                     "MIB.IETF|RFC1525- MIB.dot1dSrPortSegmentMismatchDiscards"} ]
4210               uint32 SegmentMismatchDiscards;
4211                   [Counter, Description (
4212                    "The number of frames that have been discarded by "
4213                    "the port because the routing descriptor field "
4214                    "contained a duplicate segment identifier."),
4215                    Mappingstrings {
4216                     "MIB.IETF|RFC1525- MIB.dot1dSrPortDuplicateSegmentDiscards"} ]
4217               uint32 DuplicateSegmentDiscards;
4218                   [Counter, Description (
4219                    "The number of explorer frames that have been "
4220                    "discarded by the port because the Routing "
4221                    "Information Field has exceeded the maximum route "
4222 karl  1.2          "descriptor length."),
4223                    Mappingstrings {
4224                     "MIB.IETF|RFC1525- MIB.dot1dSrPortHopCountExceedsDiscards"} ]
4225               uint32 HopCountExceedsDiscards;
4226                   [Counter, Description (
4227                    "The number of duplicate LAN IDs or Tree errors. "
4228                    "This helps in detection of problems in networks "
4229                    "containing older IBM Source Routing Bridges."),
4230                    Mappingstrings {
4231                     "MIB.IETF|RFC1525- MIB.dot1dSrPortDupLanIdOrTreeErrors"} ]
4232               uint32 DupLanIdOrTreeErrors;
4233                   [Counter, Description (
4234                    "The number of ARE and STE frames that were "
4235                    "discarded because the last LAN ID in the routing "
4236                    "information field did not equal the LAN-in ID. "
4237                    "This error can occur in implementations which do "
4238                    "only a LAN-in ID and Bridge Number check instead "
4239                    "of a LAN-in ID, Bridge Number, and LAN-out ID "
4240                    "check before they forward broadcast frames."),
4241                    Mappingstrings {
4242                     "MIB.IETF|RFC1525- MIB.dot1dSrPortLanIdMismatches"} ]
4243 karl  1.2     uint32 LanIdMismatches;
4244           };
4245           
4246           // ==================================================================
4247           //     BGPStatistics
4248           // ==================================================================
4249                   [Version ("2.6.0"), Description (
4250                    "This class contains statistical information for a "
4251                    "Group sessions.") ]
4252           class CIM_BGPStatistics : CIM_ServiceStatisticalInformation {
4253                   [Counter, Description (
4254                    "This is the number of BGP UPDATE messages received on this "
4255                    "router's BGP connection. This is a 32-bit counter."),
4256                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpPeerInUpdates"} ]
4257               uint32 InUpdates; 
4258                   [Counter, Description (
4259                    "This is the number of BGP UPDATE messages transmitted on "
4260                    "this router's BGP connection. This is a 32-bit counter."),
4261                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpPeerOutUpdates"} ]
4262               uint32 OutUpdates; 
4263                   [Counter, Description (
4264 karl  1.2          "This is the total number of BGP messages received on this "
4265                    "router's BGP connection. This is a 32-bit counter."),
4266                    Mappingstrings {
4267                     "MIB.IETF|RFC1657-MIB.bgpPeerInTotalMessages"} ]
4268               uint32 InTotalMessages;
4269                   [Counter, Description (
4270                    "This is the total number of BGP messages transmitted on "
4271                    "this router's BGP connection. This is a 32-bit counter."),
4272                    Mappingstrings {
4273                     "MIB.IETF|RFC1657-MIB.bgpPeerOutTotalMessages"} ]
4274               uint32 OutTotalMessages;
4275                   [Description (
4276                    "This contains the last error code and error subcode for "
4277                    "this router's BGP connection. If no error has occurred, "
4278                    "then each integer in the array is zero."),
4279                    Mappingstrings {"MIB.IETF|RFC1657-MIB.bgpPeerLastError"} ]
4280               uint8 LastError [2]; 
4281                   [Counter, Description (
4282                    "This contains the total number of times that the BGP Finite "
4283                    "State Machine has transitioned into the established state "
4284                    "for this router's BGP connection. This is a 32-bit "
4285 karl  1.2          "counter."),
4286                    Mappingstrings {
4287                     "MIB.IETF|RFC1657-MIB.bgpPeerFsmEstablishedTransitions"} ]
4288               uint32 FsmEstablishedTransitions;
4289                   [Gauge, Description (
4290                    "This indicates how long, in seconds, this peer has been in "
4291                    "the established state, or how long since this peer was last "
4292                    "in the established state. It is set to zero when a new peer "
4293                    "is configured or when the router is booted. This has the "
4294                    "semantics of a 32-bit gauge."),
4295                    Units ("Seconds"),
4296                    Mappingstrings {
4297                     "MIB.IETF|RFC1657-MIB.bgpPeerFsmEstablishedTime"} ]
4298               uint32 FsmEstablishedTime; 
4299                   [Gauge, Description (
4300                    "This defines the time in seconds since the last BGP UPDATE "
4301                    "message was received from the peer. This has the semantics "
4302                    "of a 32-bit gauge."),
4303                    Units ("Seconds"),
4304                    Mappingstrings {
4305                     "MIB.IETF|RFC1657-MIB.bgpPeerInUpdateElapsedTime"} ]
4306 karl  1.2     uint32 InUpdateElapsedTime;
4307           };
4308           
4309           // ==================================================================
4310           //    BGPServiceStatistics
4311           // ================================================================== 
4312                   [Association, Version ("2.6.0"), Description ( 
4313                    "This association defines statistics collected for a BGP " 
4314                    "session.") ] 
4315           class CIM_BGPServiceStatistics : CIM_ServiceStatistics { 
4316                   [Override("Stats"), Max (1), Description (
4317                    "The statistics object for the BGP session.") ] 
4318               CIM_BGPStatistics REF Stats;
4319                   [Override("Element"), Min (1), Max (1), Description ( 
4320                    "The BGPService for which statistics are being gathered.") ] 
4321               CIM_BGPService REF Element;
4322           };
4323           
4324           // ===================================================================
4325           //     CIM_EndpointIdentity (CR308a) - this class stays here!
4326           // ===================================================================
4327 karl  1.2         [Association, Version ("2.6.0"), Description (
4328                    "CIM_EndpointIdentity indicates that two ProtocolEndpoints "
4329                    "represent different aspects of the same underlying address "
4330                    "or protocol-specific ID. This association refines the "
4331                    "CIM_LogicalIdentity superclass by restricting it to the "
4332                    "Endpoint level and defining its use in well understood "
4333                    "scenarios. One of these scenarios is to represent that an "
4334                    "Endpoint has both 'LAN' and protocol-specific aspects. "
4335                    "For example, an Endpoint could be both a LANEndpoint as "
4336                    "well as a DHCPEndpoint.") ]
4337           class CIM_EndpointIdentity : CIM_LogicalIdentity {
4338                   [Override ("SystemElement"), Description (
4339                    "SystemElement represents one aspect of the "
4340                    "Endpoint.") ]
4341               CIM_ProtocolEndpoint ref SystemElement;
4342                   [Override ("SameElement"), Description (
4343                    "SameElement represents an alternate aspect of "
4344                    "the Endpoint.") ]
4345               CIM_ProtocolEndpoint ref SameElement;
4346           };
4347           
4348 karl  1.2 // ===================================================================
4349           // Start of the QoS sub-model
4350           // ===================================================================
4351           
4352           // ===================================================================
4353           //     CIM_QoSService
4354           // ===================================================================
4355                   [Version ("2.6.0"), Description (
4356                    "This is a concrete class that represents the ability to "
4357                    "conceptualize a QoS service as a set of coordinated "
4358                    "sub-services. This enables the network administrator to map "
4359                    "business rules to the network, and the network designer to "
4360                    "engineer the network such that it can provide different "
4361                    "functions for different traffic streams. "
4362                    "\n\n"
4363                    "This class has two main purposes. First, it serves as a "
4364                    "common base class for defining various sub-services that "
4365                    "are needed to build higher-level QoS services. Second, it "
4366                    "serves as a way to consolidate relationships between "
4367                    "different types of QoS services and different types of "
4368                    "ConditioningServices."
4369 karl  1.2          "\n\n"
4370                    "For example, Gold Service may be defined as a set of "
4371                    "sub-services, where each of these sub-services perform one "
4372                    "or more different functions required by the higher-level "
4373                    "service. Continuing the example, Gold Service may be used "
4374                    "to specify EF for one traffic stream along with different "
4375                    "AF services for other different traffic streams. Each of "
4376                    "these services are instances of the class QoSService, and "
4377                    "each require a set of sub-services to be defined as part of "
4378                    "their implementation. For example, one would expect to see "
4379                    "different marking, dropping, and queuing sub-services to be "
4380                    "defined for each of these services.") ]
4381           class CIM_QoSService : CIM_NetworkService {
4382           };
4383           
4384           // ==================================================================
4385           //    QoSSubService
4386           // ==================================================================
4387                   [Association, Aggregation, Version ("2.6.0"), 
4388                    Description (
4389                    "  The associations - QoSSubService and QoSConditioningSub"
4390 karl  1.2          "Service - operate in conjunction. High level QoS "
4391                    "definitions, such as 'John gets Gold Service', map to "
4392                    "lower level, more concrete QoSServices (the subclasses "
4393                    "of QoSService). This is described by the QoSSubService "
4394                    "association. In turn, each of the SubServices may require "
4395                    "their own conditioning. This is modeled using the "
4396                    "QoSConditioningSubService aggregation. \n"
4397                    "  Note that a more concrete QoSService may only be "
4398                    "aggregated into one higher level Service, using this "
4399                    "association. The cardinality on the GroupComponent "
4400                    "reference is Max (1).") ]
4401           class CIM_QoSSubService : CIM_ServiceComponent  {
4402                   [Override ("GroupComponent"), Aggregate, Max (1), 
4403                    Description (
4404                    "The higher level QoSService that is constructed by "
4405                    "aggregating one or more lower-level QoSServices.") ]
4406               CIM_QoSService REF GroupComponent;
4407                   [Override ("PartComponent"), Description (
4408                    "The more concrete QoSService that is used to provide "
4409                    "the higher level Service.") ]
4410               CIM_QoSService REF PartComponent; 
4411 karl  1.2 };
4412           
4413           // ===================================================================
4414           //     PrecedenceService
4415           // ===================================================================
4416                   [Version ("2.6.0"), Description (
4417                    "This class represents a specialization of the general "
4418                    "concept of forwarding network traffic by adding specific "
4419                    "semantics that define how traffic is forwarded based on "
4420                    "the value of the ToS byte of a packet. "
4421                    "\n\n"
4422                    "This class is used to enable DiffServ devices and non-"
4423                    "DiffServ devices to exchange traffic. This is done by "
4424                    "defining a sibling class, DiffServService, to represent "
4425                    "devices that forward traffic based on the DiffServ code "
4426                    "point. This enables the administrator to define mappings "
4427                    "between devices that do not support DiffServ, and instead "
4428                    "use IP Precedence, to devices that do support DiffServ, "
4429                    "which use DSCPs. "
4430                    "\n\n"
4431                    "Since the PrecedenceService class is a specialization of "
4432 karl  1.2          "QoSService, it can be related to higher-level QoS services "
4433                    "as well as to lower-level sub-services (e.g., "
4434                    "classification, metering, dropping, queuing, and others).") ]
4435           class CIM_PrecedenceService : CIM_QoSService {
4436                   [Description (
4437                    "This property is an 8-bit unsigned integer that defines the "
4438                    "notion of precedence for different types of traffic.") ]
4439               uint8 PrecedenceValue;
4440           };
4441           
4442           // ===================================================================
4443           //     DiffServService
4444           // ===================================================================
4445                   [Version ("2.6.0"), Description (
4446                    "DiffServService represents using standard or custom "
4447                    "DiffServ services to implement a (higher-level) QoS service. "
4448                    "Note that the DiffServService may be just one of a set of "
4449                    "coordinated QoSSubServices that together implement a "
4450                    "higher-level QoS service."
4451                    "\n\n"
4452                    "DiffServService is modeled as a specialization of QoS"
4453 karl  1.2          "Service. This enables it to be related to a higher-level "
4454                    "QoSService (via QoSSubService) as well as to specific "
4455                    "ConditioningServices (e.g., classification, metering, "
4456                    "dropping, queuing, and others).") ]
4457           class CIM_DiffServService : CIM_QoSService {
4458                   [Description (
4459                    "This property is an unsigned 8-bit integer, and defines the "
4460                    "Differentiated Services Code Point (DSCP) that this link "
4461                    "uses to represent various types of differentiated "
4462                    "services through device-specific configuration commands.") ]
4463               uint8 DSCP;
4464           };
4465           
4466           // ===================================================================
4467           //     8021PService
4468           // ===================================================================
4469                   [Version ("2.6.0"), Description (
4470                    "This class represents a specialization to the general "
4471                    "concept of forwarding network traffic by adding specific "
4472                    "semantics that define how traffic is forwarded based on "
4473                    "the value of the Priority field in the 802.1P header. "
4474 karl  1.2          "\n\n"
4475                    "This class is used to enable DiffServ domains and domains "
4476                    "that support 802.1P only to exchange traffic. It represents "
4477                    "the mapping between implementations that only support "
4478                    "802.1P priority marking to be mapped to implementations "
4479                    "that support DiffServ, which use DSCPs. "
4480                    "\n\n"
4481                    "The 8021PService class is modeled as a specialization of "
4482                    "QoSService. This enables it to be related to a higher-level "
4483                    "QoS service as well as to lower-level sub-services (e.g., "
4484                    "classification, metering, dropping, queuing, and others).") ]
4485           class CIM_8021PService : CIM_QoSService {
4486                   [Description (
4487                    "This property is an 8-bit unsigned integer that defines the "
4488                    "notion of priority as specified in 802.1P "
4489                    "implementations.") ]
4490               uint8 PriorityValue;
4491           };
4492           
4493           // ===================================================================
4494           //     AFService
4495 karl  1.2 // ===================================================================
4496                   [Version ("2.6.0"), Description (
4497                    "This class represents a specialization to the general "
4498                    "concept of forwarding network traffic by adding specific "
4499                    "semantics that characterize the operation of the Assured "
4500                    "Forwarding (AF) Service (RFC2597). This RFC defines four "
4501                    "different AF classes to represent four different treatments "
4502                    "of traffic (e.g., a different amount of forwarding "
4503                    "resources, such as buffer space and bandwidth, are "
4504                    "allocated. Within each AF class, IP packets are marked with "
4505                    "one of three possible drop precedence values. The drop "
4506                    "precedence of a packet determines the relative "
4507                    "importance of that packet compared to other packets within "
4508                    "the same AF class if congestion occurs. A congested "
4509                    "interface will try to avoid dropping packets with a lower "
4510                    "drop precedence value by instead discarding packets with a "
4511                    "higher drop precedence value."
4512                    "\n\n"
4513                    "Note that this RFC defines 12 DSCPs that together implement "
4514                    "the AF Per-Hop Behavior (PHB) group. Implementations are "
4515                    "free to extend this (e.g., add more classes and/or drop "
4516 karl  1.2          "precedences) and indeed do not have to implement the AF PHB "
4517                    "to be considered compliant to DiffServ. However, "
4518                    "implementations should use this set of DSCPs if they "
4519                    "implement the AF PHB. "
4520                    "\n\n"
4521                    "The AFService class is modeled as a specialization of "
4522                    "DiffServService, which is in turn a specialization of "
4523                    "QoSService. This enables it to be related to a higher-level "
4524                    "QoS services as well as to lower-level sub-services (e.g., "
4525                    "classification, metering, dropping, queuing, and others).") ]
4526           class CIM_AFService : CIM_DiffServService {
4527                   [Description (
4528                    "This property is an 8-bit unsigned integer that defines the "
4529                    "number of classes that this AF implementation uses. "
4530                    "Implementations should define at least four classes.") ]
4531               uint8 ClassNumber;
4532                   [Description (
4533                    "This property is an 8-bit unsigned integer that defines the "
4534                    "number of drop precedence values that this AF "
4535                    "implementation uses. The number of drop precedence values "
4536                    "are PER AF CLASS. Implementations should define at least "
4537 karl  1.2          "three drop precedence values per class.") ]
4538               uint8 DropperNumber;
4539           };
4540           
4541           // ===================================================================
4542           //     EFService
4543           // ===================================================================
4544                   [Version ("2.6.0"), Description (
4545                    "This class represents a specialization to the general "
4546                    "concept of forwarding network traffic by adding specific "
4547                    "semantics that characterize the operation of the "
4548                    "Expedited Forwarding (EF) Service (defined in RFC 2598). "
4549                    "\n\n"
4550                    "The EFService class is modeled as a specialization of "
4551                    "DiffServService, which is in turn a specialization of "
4552                    "QoSService. This enables it to be related to a higher-level "
4553                    "QoS service as well as to lower-level sub-services (e.g., "
4554                    "classification, metering, dropping, queuing, and others). "
4555                    "\n\n"
4556                    "The EF PHB can be used to build a low loss, low latency, "
4557                    "low jitter, assured bandwidth, end-to-end service through "
4558 karl  1.2          "DiffServ domains.  Such a service appears to the endpoints "
4559                    "like a point-to-point connection or a virtual leased line. "
4560                    "This service has also been described as Premium service in "
4561                    "the IETF literature. "
4562                    "\n\n"
4563                    "The EF PHB is not a mandatory part of the DiffServ "
4564                    "architecture (e.g., a node does not have to implement the "
4565                    "EF PHB to be considered DiffServ-compliant.  However, when "
4566                    "a DiffServ-compliant node claims to implement the EF PHB, "
4567                    "the implementation must conform to the specification given "
4568                    "in RFC2598."
4569                    "\n\n"
4570                    "RFC 2598 defines one DSCP for the EF service. Thus, there "
4571                    "is no need to define any attributes in this class, since an "
4572                    "instance of the EFService class, by definition, means that "
4573                    "this particular DSCP is used.") ]
4574           class CIM_EFService : CIM_DiffServService {
4575           };
4576           
4577           // ==================================================================
4578           //    AFRelatedServices
4579 karl  1.2 // ==================================================================
4580                   [Association, Version ("2.6.0"), Description (
4581                    "The IETF's RFC2597 describes a Differentiated Services "
4582                    "Per-Hop-Behavior (PHB) Group called Assured Forwarding "
4583                    "(AF). Quoting from the RFC, \"The AF PHB group provides "
4584                    "delivery of IP packets in four independently forwarded "
4585                    "AF classes. Within each AF class, an IP packet can be "
4586                    "assigned one of three different levels of drop "
4587                    "precedence.\" The AFRelatedServices association describes "
4588                    "the precedence of the individual AF drop-related "
4589                    "Services within an AF IP packet-forwarding class.") ]
4590           class CIM_AFRelatedServices {
4591                   [Key, Max (1), Description (  
4592           	   "The AFService with a lower drop precedence (ie, lower "
4593                    "probability of dropping packets).") ]
4594               CIM_AFService REF AFLowerDropPrecedence;
4595                   [Key, Description (  
4596                    "An AFService at the same IP packet-forwarding class level, "
4597                    "but at a higher drop precedence.") ]
4598               CIM_AFService REF AFHigherDropPrecedence;
4599           };
4600 karl  1.2 
4601           // ===================================================================
4602           //     ConditioningService
4603           // ===================================================================
4604                   [Version ("2.6.0"), Description (
4605                    "This class is a specialization of ForwardingService, and "
4606                    "represents the ability to define how traffic will be "
4607                    "conditioned in the data forwarding path of a device. The "
4608                    "subclasses of ConditioningService define the particular "
4609                    "type of conditioning that is done. Five fundamental types "
4610                    "of functions are defined in this version (2.4) of the "
4611                    "model. They are the services performed by a classifier, "
4612                    "meter, marker, dropper, and queue. Note that other, more "
4613                    "sophisticated, types of actions may be defined in the "
4614                    "future.") ]
4615           class CIM_ConditioningService : CIM_ForwardingService {
4616                   [Description (
4617                    "This property is a boolean that, if TRUE, signifies that "
4618                    "one or more conditioning functions can be performed on "
4619                    "traffic encountered by this ConditioningService. This "
4620                    "allows one or more ConditioningServices to be enabled or "
4621 karl  1.2          "disabled to provide different types of conditioning for "
4622                    "traffic.") ]
4623               boolean Enabled;
4624           };
4625           
4626           // ==================================================================
4627           //    QoSConditioningSubService
4628           // ==================================================================
4629                   [Association, Aggregation, Version ("2.6.0"), 
4630                    Description (
4631                    "A QoSService utilizes underlying ConditioningServices as "
4632                    "part of its overall functionality. This is modeled using "
4633                    "the QoSConditioningSubService association. Note that "
4634                    "a ConditioningService may only be part of a single "
4635                    "QoSService - the cardinality on the QoSService "
4636                    "reference is Max (1).") ] 
4637           class CIM_QoSConditioningSubService : CIM_ServiceComponent {
4638                   [Override ("GroupComponent"), Aggregate, Max (1), 
4639                    Description (
4640                    "The QoSService that includes the ConditioningService.") ]
4641               CIM_QoSService REF GroupComponent;
4642 karl  1.2         [Override ("PartComponent"), 
4643                    Description ("The ConditioningService.") ]
4644               CIM_ConditioningService REF PartComponent; 
4645           };
4646           
4647           // ==================================================================
4648           //    ConditioningServiceOnEndpoint
4649           // ==================================================================
4650                   [Association, Version ("2.6.0"), Description (
4651                    "The QoS Model describes the traffic conditioning functions "
4652                    "in place for a network device. In order to 'be "
4653                    "conditioned', a packet is received at a ProtocolEndpoint. "
4654                    "After 'conditioning', a packet is dropped or leaves the "
4655                    "device via a ProtocolEndpoint. This dependency on "
4656                    "ProtocolEndpoints is defined by the ConditioningServiceOn"
4657                    "Endpoint association. A property of the association, "
4658                    "ServiceType, indicates whether the ConditioningService "
4659                    "handles incoming (\"Ingress\") or out-going (\"Egress\") "
4660                    "packets.") ]
4661           class CIM_ConditioningServiceOnEndpoint : CIM_ForwardsAmong {
4662                   [Override ("Antecedent"), Max (1), Description (
4663 karl  1.2          "The ProtocolEndpoint through which traffic arrives at or "
4664                    "leaves from a network device.") ]
4665               CIM_ProtocolEndpoint REF Antecedent;
4666                   [Override ("Dependent"), Description (
4667                    "The ConditioningService which begins or ends the traffic "
4668                    "conditioning processing within a network device.") ]
4669               CIM_ConditioningService REF Dependent;
4670                   [Description (
4671                    "Indicates whether a packet is incoming (value = 1, "
4672                    "\"Ingress\") or out-going (value = 2, \"Egress\") at the "
4673                    "ProtocolEndpoint, relative to the ConditioningService."),
4674                    ValueMap {"0", "1", "2"},  
4675                    Values {"Unknown", "Ingress", "Egress"} ]
4676               uint16 ServiceType; 
4677           };
4678           
4679           // ==================================================================
4680           //    NextService
4681           // ==================================================================
4682                   [Association, Version ("2.6.0"), Description (
4683                    "  In processing or 'conditioning' a packet at a network "
4684 karl  1.2          "device, that packet is handled by a variety of Conditioning"
4685                    "Services (such as Classifiers, Meters, Droppers, etc.). "
4686                    "The Services may feed one another directly, or be more "
4687                    "discretely mapped to multiple 'next' Services (for example, "
4688                    "queues) based on the characteristics of the packet. \n"
4689                    "  There is a need to indicate the sequence of Services "
4690                    "when conditioning packets in a network device. This "
4691                    "is accomplished via the NextService association.  Both one-"
4692                    "to-one and fan in/fan out relationships can be described. \n"
4693                    "  Note that this relationship is truly a Dependency "
4694                    "association, but can not be modeled as such - since an "
4695                    "additional key property is required. This key allows a "
4696                    "ConditioningService to forward multiple traffic flows to "
4697                    "the same 'next' Service but maintain their traffic "
4698                    "'identity'. This identity must be maintained to allow a "
4699                    "later step in the conditioning process to 'fan out' from "
4700                    "one to many 'next' Services. The TrafficClass key "
4701                    "property uniquely distinguishes potentially multiple "
4702                    "NextService instances between the same "
4703                    "ConditioningServices.") ] 
4704           class CIM_NextService {
4705 karl  1.2         [Key, Description (
4706                    "The preceeding ConditioningService, 'earlier' in the "
4707                    "processing sequence for a packet.") ]
4708               CIM_ConditioningService REF PreceedingService;
4709                   [Key, Description (
4710                    "The 'next' or following ConditioningService.") ]
4711               CIM_ConditioningService REF FollowingService;
4712           	  [Key, Description (
4713                    "Traffic flows from the various ConditioningServices may be "
4714                    "distinguished by their specific traffic class (information "
4715                    "which is conveyed in the FilterEntry.TrafficClass "
4716                    "property). There can be only one traffic 'class of "
4717                    "service' per output from the ConditioningService (i.e., "
4718                    "per instance of this association)."),
4719                    ModelCorrespondence {"CIM_FilterEntry.TrafficClass"} ]
4720               string TrafficClass;
4721           };
4722           
4723           // ===================================================================
4724           //     ClassifierService
4725           // ===================================================================
4726 karl  1.2         [Version ("2.6.0"), Description (
4727                    "This class represents a logical entity that resides in the "
4728                    "data forwarding path of a network device. A classifier "
4729                    "takes a single input traffic stream and sorts it into one "
4730                    "or more output traffic streams. The sorting is done by a "
4731                    "set of filters that select packets based on the packet "
4732                    "contents (or possibly other attributes associated with the "
4733                    "packet). Each output stream is the result of matching a "
4734                    "particular filter (or not matching any filter). "
4735                    "\n\n"
4736                    "Classification is modeled as a QoSSubService that occurs "
4737                    "as part of the conditioning that may be applied to a "
4738                    "traffic stream. Thus, it is subclassed from "
4739                    "ConditioningService.") ]
4740           class CIM_ClassifierService : CIM_ConditioningService {
4741                   [Description (
4742                    "This property is an enumerated 16-bit unsigned integer "
4743                    "that is used to define the specific type of classifier "
4744                    "of this instance. The following types of "
4745                    "classifiers are defined: "
4746                    "\n\n"
4747 karl  1.2          " 1 - Other; \n 2 - Behavior Aggregate; \n"
4748                    " 3 - IPv4 Multi-Field-5; \n"
4749                    " 4 - IPv6 Multi-Field-5; \n 5 - IPv4 Multi-Field-6; \n"
4750                    " 6 - IPv6 Multi-Field-6; \n 7 - 802 MAC; \n "
4751                    " 8 - IEEE Priority; \n"
4752                    " 9 - IEEE VLAN; \n 10 - Free-form. "
4753                    "\n\n"
4754                    "Here, Multi-Field-5 defines a filter to match on source "
4755                    "and destination IP address, source and destination port, "
4756                    "and IP Protocol. Multi-Field-6 is the same, except that "
4757                    "the DSCP value is also matched."),
4758                    ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", 
4759                     "10"},
4760                    Values {"Other", "Behavior Aggregate", 
4761                     "IPv4 Multi-Field-5", "IPv6 Multi-Field-5",
4762                     "IPv4 Multi-Field-6", "IPv6 Multi-Field-6", 
4763                     "802 MAC", "IEEE Priority", "IEEE VLAN", 
4764                     "Free-form"}, 
4765                    ModelCorrespondence { 
4766                     "CIM_ClassifierService.OtherClassifierType"} ] 
4767              uint16 ClassifierType;
4768 karl  1.2         [Description (
4769                    "This is a vendor-specified string describing the type "
4770                    "of classifier. It is used when the value of the "
4771                    "ClassifierType attribute of this class is equal to 1."),
4772                    ModelCorrespondence { 
4773                     "CIM_ClassifierService.ClassifierType"} ]
4774               string OtherClassifierType;
4775                   [Description (
4776                    "This is a boolean attribute that, if TRUE, means that "
4777                    "this Classifier has already processed at least one "
4778                    "packet.") ]
4779               boolean HaveClassifiedPackets;
4780           };
4781           
4782           // ==================================================================
4783           //    ClassifierFilterSet
4784           // ==================================================================
4785                   [Association, Version ("2.6.0"), Description (
4786                    "In order for a ClassifierService to correctly identify and "
4787                    "process network traffic, that traffic must be described by "
4788                    "FilterEntries, which are aggregated into FilterLists. This "
4789 karl  1.2          "association defines the Dependency of the ClassifierService "
4790                    "on FilterLists (and therefore, their FilterEntries). The "
4791                    "cardinality of the association requires that the Classifier"
4792                    "Service operate against at least one FilterList.") ] 
4793           class CIM_ClassifierFilterSet : CIM_Dependency {
4794                   [Override ("Antecedent"), Min (1), Description (
4795           	   "The FilterList aggregating FilterEntries, these in turn "
4796                    "describe how traffic is identified and processed by the "
4797                    "ClassifierService.") ]
4798               CIM_FilterList REF Antecedent;
4799                   [Override ("Dependent"), Description (
4800                    "The ClassifierService which uses the FilterList and its "
4801                    "aggregated FilterEntries.") ]
4802               CIM_ClassifierService REF Dependent;
4803                   [Description (
4804                    "The ordering of the FilterLists used in the classification "
4805                    "and forwarding functions of the ClassifierService.") ]
4806               uint16 FilterListPosition; 
4807           };
4808           
4809           // ===================================================================
4810 karl  1.2 //     MeterService
4811           // ===================================================================
4812                   [Version ("2.6.0"), Description (
4813                    "This class represents a logical entity that resides in the "
4814                    "data forwarding path of a network device. It describes "
4815                    "the metering of network traffic. Metering is the "
4816                    "function of monitoring the arrival times of packets of a "
4817                    "traffic stream and determining the level of conformance of "
4818                    "each packet with respect to a pre-established traffic "
4819                    "profile. A meter has the ability to invoke different "
4820                    "ConditioningServices for conforming traffic and non-"
4821                    "conforming traffic. Non-conforming packets may be further "
4822                    "conditioned (e.g., dropped or queued) by routing the packet "
4823                    "to the appropriate conditioning element. "
4824                    "\n\n"
4825                    "This class is the base class for defining different types "
4826                    "of meters. As such, it contains common properties that all "
4827                    "meter subclasses share.") ]
4828           class CIM_MeterService : CIM_ConditioningService {
4829                   [Description (
4830                    "This property is an enumerated 16-bit unsigned integer "
4831 karl  1.2          "that is used to specify the particular type of meter. "
4832                    "Defined values of the enumeration are: "
4833                    "\n\n"
4834                    "   1: Other \n"
4835                    "   2: AverageRateMeter \n"
4836                    "   3: EWMAMeter \n"
4837                    "   4: TokenBucketMeter."
4838                    "\n\n"
4839                    "Note: The MeterType property and the MeterService "
4840                    "subclasses provide similar information. This property is "
4841                    "defined for query purposes and for future expansion. It "
4842                    "is assumed that not all MeterServices will require a "
4843                    "subclass to define them.  Therefore, MeterService will "
4844                    "be instantiated directly and the Type property is "
4845                    "needed."),
4846                    ValueMap {"1", "2", "3", "4"}, 
4847                    Values {"Other", "AverageRateMeter", 
4848                     "EWMAMeter", "TokenBucketMeter"}, 
4849                    ModelCorrespondence {"CIM_MeterService.OtherMeterType"} ]
4850               uint16 MeterType;
4851                   [Description (
4852 karl  1.2          "This property is a string used in conjunction with "
4853                    "the MeterType property. When the value of MeterType "
4854                    "is 1 (i.e., \"Other\"), then the name of the conformance "
4855                    "level for this meter is defined in this property."),
4856                    ModelCorrespondence {"CIM_MeterService.MeterType"} ]
4857               string OtherMeterType;
4858                   [Description (
4859                    "An unsigned integer indicating the number of conformance "
4860                    "levels supported by the Meter. For example, when only " 
4861                    "'in-profile' or 'out of profile' metering is supported. "
4862                    "ConformanceLevels is set to 2.") ]
4863               uint16 ConformanceLevels;
4864           };
4865           
4866           // ===================================================================
4867           //     AverageRateMeterService
4868           // ===================================================================
4869                   [Version ("2.6.0"), Description (
4870                    "This class represents a logical entity that resides in the "
4871                    "data forwarding path of a network device. It describes the "
4872                    "metering of network traffic using an Average Rate Meter. "
4873 karl  1.2          "This type of meter measures the average rate at which "
4874                    "packets are submitted to it over a specified time. Packets "
4875                    "are defined as conformant if their average arrival rate "
4876                    "does not exceed the specified measuring rate of the meter. "
4877                    "Any packet that causes the specified measuring rate to be "
4878                    "exceeded is defined to be non-conforming. "
4879                    "\n\n"
4880                    "This is modeled as a subclass of ConditioningService and "
4881                    "has the ability to invoke different ConditioningServices "
4882                    "for conforming and non-conforming traffic.") ]
4883           class CIM_AverageRateMeterService : CIM_MeterService {
4884                   [Description (
4885                    "This property is a 32-bit real number that defines the "
4886                    "rate that determines whether admitted packets are in "
4887                    "conformance or not."),
4888                    Units ("KiloBits per Second") ]
4889               real32 AverageRate;
4890                  [Description ( 
4891                   "This property is a 64-bit unsigned integer that defines " 
4892                   "the time period over which the average measurement should " 
4893                   "be taken."), 
4894 karl  1.2         Units ("NanoSeconds") ] 
4895               uint64 DeltaInterval; 
4896           };
4897           
4898           // ===================================================================
4899           //     EWMAMeterService
4900           // ===================================================================
4901                   [Version ("2.6.0"), Description (
4902                    "This class represents a logical entity that resides in the "
4903                    "data forwarding path of a network device. It describes the "
4904                    "metering of network traffic using an Exponentially Weighted "
4905                    "Moving Average meter. This meter can be modeled as a simple "
4906                    "IIR low-pass filter that measures the rate of incoming "
4907                    "packets over a small fixed sampling interval. Any admitted "
4908                    "packet that pushes the average rate over a pre-defined "
4909                    "limit is defined to be non-conforming. "
4910                    "\n\n"
4911                    "This is modeled as a subclass of ConditioningService and "
4912                    "has the ability to invoke different ConditioningServices "
4913                    "for conforming and non-conforming traffic.") ]
4914           class CIM_EWMAMeterService : CIM_MeterService {
4915 karl  1.2         [Description (
4916                    "This property is a 32-bit real number that defines the "
4917                    "average rate against which the sampled arrival rate of "
4918                    "packets should be measured. Any packet that causes the "
4919                    "sampled rate to exceed this rate is deemed "
4920                    "non-conforming."), 
4921                    Units ("KiloBits Per Second") ]
4922               real32 AverageRate;
4923                  [Description ( 
4924                   "This property is a 64-bit unsigned integer that defines " 
4925                   "the sampling interval used to measure the arrival rate in " 
4926                   "bytes. The calculated rate is averaged over this interval " 
4927                   "and checked against the AverageRate property. All " 
4928                   "packets whose computed average arrival rate is " 
4929                   "less than the AverageRate are deemed conforming."), 
4930                   Units ("NanoSeconds") ] 
4931               uint64 DeltaInterval;
4932                   [Description (
4933                    "This property is a 32-bit real number that defines the time "
4934                    "constant (e.g. frequency response) of what is essentially a "
4935                    "simple IIR low-pass filter.") ]
4936 karl  1.2     real32 Gain;
4937           };
4938           
4939           // ===================================================================
4940           //     TokenBucketMeterService
4941           // ===================================================================
4942                   [Version ("2.6.0"), Description (
4943                    "This class represents a logical entity that resides in the "
4944                    "data forwarding path of a network device. It describes the "
4945                    "metering of network traffic using a token bucket meter. "
4946                    "Two types of token bucket meters are defined using this "
4947                    "class - a simple, 2 parameter bucket meter, and a multi-"
4948                    "stage meter."
4949                    "\n\n"
4950                    "A simple token bucket usually has two parameters, an "
4951                    "average token rate and a burst size. Quoting from the IETF "
4952                    "Draft, 'A Conceptual Model for DiffServ Routers', \"TB "
4953                    "meters compare the arrival rate of packets to the average "
4954                    "rate specified by the TB profile.  Logically, tokens "
4955                    "accumulate in a bucket at the average rate, up to a "
4956                    "maximum credit which is the burst size. Packets of length "
4957 karl  1.2          "L bytes are considered conforming if any tokens are "
4958                    "available in the bucket at the time of packet arrival: up "
4959                    "to L bytes may then be borrowed from future token "
4960                    "allocations. Packets are allowed to exceed the average "
4961                    "rate in bursts up to the burst size. Packets which arrive "
4962                    "to find a bucket with no tokens in it are deemed "
4963                    "non-conforming.\" This type of meter has only two "
4964                    "conformance levels - conforming and non-conforming. "
4965                    "\n\n"       
4966                    "This class also defines an excess burst size, which enables "
4967                    "the meter to have three conformance levels (basically, "
4968                    "'conforming', 'partially conforming', and 'non-conforming'). "
4969                    "The difference is that packets that exceed the excess burst "
4970                    "size are deemed non-conforming, while packets that exceed "
4971                    "the smaller BurstSize but are less than the ExcessBurst"
4972                    "Size are deemed partially conforming. "
4973                    "\n\n"
4974                    "This is modeled as a subclass of ConditioningService and "
4975                    "has the ability to invoke different ConditioningServices "
4976                    "for conforming, partially conforming and non-conforming "
4977                    "traffic.") ]
4978 karl  1.2 class CIM_TokenBucketMeterService : CIM_MeterService {
4979                   [Description (
4980                    "This property is a 32-bit real number that is used to "
4981                    "define the committed rate of the meter."),
4982                    Units ("KiloBits per Second") ]
4983               real32 AverageRate;
4984                   [Description (
4985                    "This attribute is a 32-bit real number that is used to "
4986                    "define the peak rate of the meter."), 
4987                    Units ("KiloBits per Second") ]
4988               real32 PeakRate;
4989                   [Description (
4990                    "This property is a 32-bit real number that is used to "
4991                    "define the maximum number of tokens available for the "
4992                    "committed rate (specified by the AverageRate property)."),
4993                    Units ("KiloBytes") ]
4994               real32 BurstSize;
4995                   [Description (
4996                    "This property is a 32-bit real number that is used to "
4997                    "define the maximum number of tokens available for the "
4998                    "peak rate (specified by the PeakRate property)."),  
4999 karl  1.2          Units ("KiloBytes") ]
5000               real32 ExcessBurstSize;
5001           };
5002           
5003           // ==================================================================
5004           //    NextServiceAfterMeter
5005           // ==================================================================
5006                   [Association, Version ("2.6.0"), Description (
5007                    "Describes the 'next' ConditioningService for a packet, "
5008                    "after processing by the MeterService.") ] 
5009           class CIM_NextServiceAfterMeter : CIM_NextService {
5010                   [Override ("PreceedingService"), 
5011                    Description ("The MeterService.") ]
5012               CIM_MeterService REF PreceedingService;
5013           	  [Description (
5014                    "Information on the result of the metering. Traffic "
5015                    "is distinguished as being in- or out-of-profile, or "
5016                    "\"Partially Conforming\" for a 3 color Meter. This "
5017                    "is captured through setting the property to the value "
5018                    "1, 3 or 2, respectively."),
5019                    ValueMap {"0", "1", "2", "3"}, 
5020 karl  1.2          Values {"Unknown", "In-profile", "Partially Conforming", 
5021                     "Out-of-profile"} ]
5022               uint16 MeterResult;
5023           };
5024           
5025           // ===================================================================
5026           //     MarkerService
5027           // ===================================================================
5028                   [Version ("2.6.0"), Description (
5029                    "This class represents a logical entity that resides in the "
5030                    "data forwarding path of a network device. It describes the "
5031                    "marking or re-marking (e.g., set or reset a particular "
5032                    "field in a packet header) of network traffic. Markers may "
5033                    "act either on unmarked packets or re-mark previously "
5034                    "marked packets. Markers are usually invoked as a result of "
5035                    "a preceding classifier match. "
5036                    "\n\n"
5037                    "This is modeled as a QoSSubService that is part of a "
5038                    "higher-level QoSService. It is a subclass of Conditioning"
5039                    "Service and has the ability to mark traffic and then invoke "
5040                    "another ConditioningServices for further processing of the "
5041 karl  1.2          "traffic.") ]
5042           class CIM_MarkerService : CIM_ConditioningService {
5043                   [Description (
5044                    "This property is a boolean attribute that, when TRUE, "
5045                    "signifies that this Marker can remark the field value "
5046                    "specified in the RemarkType property, with the value "
5047                    "specified in the RemarkValue property. This change is "
5048                    "made to unmarked packets or to re-mark a previously "
5049                    "marked packet.") ]
5050               boolean CanRemark;
5051                   [Description (
5052                    "This property is an enumerated 16-bit unsigned integer "
5053                    "that defines what type of remarking will be done. Values "
5054                    "are: "
5055                    "\n\n"
5056                    "   1:  Other \n"
5057                    "   2:  Mark ToS Byte \n"
5058                    "   3:  Mark the DSCP \n"
5059                    "   4:  Mark the Priority Field "),
5060                    ValueMap {"1", "2", "3", "4"},
5061                    Values {"Other", "Mark ToS Byte", "Mark the DSCP", 
5062 karl  1.2           "Mark the Priority Field"}, 
5063                    ModelCorrespondence { 
5064                     "CIM_MarkerService.OtherRemarkType"} ]
5065               uint16 RemarkType; 
5066                   [Description (
5067                    "This property contains a vendor-specific value for "
5068                    "the type of remarking that is done. It is used when the "
5069                    "value of the RemarkType property is 1 (Other)."),
5070                    ModelCorrespondence {"CIM_MarkerService.RemarkType"} ]
5071               string OtherRemarkType; 
5072                   [Description (
5073                    "This property is a 16-bit unsigned integer that is the "
5074                    "value to be applied to the field specified in the "
5075                    "RemarkType attribute.") ]
5076               uint16 RemarkValue;
5077           };
5078           
5079           // ===================================================================
5080           //     DropperService
5081           // ===================================================================
5082                   [Version ("2.6.0"), Description (
5083 karl  1.2          "This class represents a logical entity that resides in the "
5084                    "data forwarding path of a network device. It describes the "
5085                    "ability to drop network traffic. As such, it is the base "
5086                    "class for different types of droppers. These droppers are "
5087                    "distinguished by the algorithm that they use to drop "
5088                    "traffic. "
5089                    "\n\n"
5090                    "This is modeled as a QoSSubService that is part of a "
5091                    "higher-level QoSService. It is a subclass of Conditioning"
5092                    "Service and has the ability to drop traffic or invoke "
5093                    "another ConditioningServices for further processing of the "
5094                    "remaining traffic.") ]
5095           class CIM_DropperService : CIM_ConditioningService {
5096                   [Description (
5097                    "This property is an enumerated 16-bit unsigned integer "
5098                    "that defines the type of dropper. Values are: "
5099                    "\n\n"
5100                    "   1:  Other \n"
5101                    "   2:  Head \n"
5102                    "   3:  Tail \n"
5103                    "   4:  RED \n"
5104 karl  1.2          "   5:  Weighted RED"
5105                    "\n\n"
5106                    "Note: The DropperType property and the DropperService "
5107                    "subclasses provide similar information. This property is "
5108                    "defined for query purposes and to not require a "
5109                    "subclass for all types of DropperServices (for example, "
5110                    "to describe a Head or Tail Dropper in today's model). "
5111                    "Therefore, DropperService can be instantiated directly "
5112                    "and the Type property is needed."),
5113                    ValueMap {"1", "2", "3", "4", "5"},
5114                    Values {"Other", "Head", "Tail", "RED", "Weighted RED"},
5115                    ModelCorrespondence { 
5116                     "CIM_DropperService.OtherDropperType"} ]
5117               uint16 DropperType; 
5118                   [Description (
5119                    "This property contains a vendor-specific value for the "
5120                    "type of dropping that is done. It is used when the value "
5121                    "of the DropperType property is 1 (Other)."),
5122                    ModelCorrespondence {"CIM_DropperService.DropperType"} ]
5123               string OtherDropperType;
5124                   [Description (
5125 karl  1.2          "This property indicates whether the Dropper will always "
5126                    "drop incoming packets (value=1) regardless of their type."),
5127                    ValueMap {"0", "1", "2"},
5128                    Values {"Unknown", "Always Drop", "Do Not Always Drop"} ]
5129               uint16 AlwaysDrop;
5130                   [Description (
5131                    "This property is an enumerated unsigned 16-bit integer "
5132                    "that defines the metric used to trigger the start of "
5133                    "dropping packets. This does NOT mean that all packets "
5134                    "will be dropped; it does mean that SOME packets will "
5135                    "start to be dropped. The number and type of packets "
5136                    "dropped is a function of the type of algorithm used by "
5137                    "this Dropper. Values are: "
5138                    "\n\n"
5139                    "   1:  Other \n"
5140                    "   2:  Queue Threshold \n"
5141                    "   3:  Arrival Rate "),
5142                    ValueMap {"1", "2", "3"},
5143                    Values {"Other", "Queue Threshold", "Arrival Rate"} ]
5144               uint16 DropStartMetric;
5145                   [Description (
5146 karl  1.2          "This property is an enumerated unsigned 16-bit integer "
5147                    "that defines the metric used to determine when ALL "
5148                    "packets will be dropped REGARDLESS of the type of "
5149                    "algorithm used by this Dropper. Values are: "
5150                    "\n\n"
5151                    "   1:  Other \n"
5152                    "   2:  Queue Threshold \n"
5153                    "   3:  Arrival Rate "),
5154                    ValueMap {"1", "2", "3"},
5155                    Values {"Other", "Queue Threshold", "Arrival Rate"} ]
5156               uint16 DropMaintainMetric;
5157           };
5158           
5159           // ===================================================================
5160           //     REDDropperService
5161           // ===================================================================
5162                   [Version ("2.6.0"), Description (
5163                    "This class represents a logical entity that resides in the "
5164                    "data forwarding path of a network device. It describes the "
5165                    "ability to drop network traffic using a Random Early "
5166                    "Detection (RED) algorithm. The purpose of RED is to avoid "
5167 karl  1.2          "congestion (as opposed to managing congestion). That is, "
5168                    "instead of waiting for the queues to fill up and then "
5169                    "dropping large numbers of packets, RED works by monitoring "
5170                    "the average queue depth. When the queue depth exceeds "
5171                    "a minimum threshold, packets are randomly discarded, asking "
5172                    "only those connections to slow down. "
5173                    "\n\n"
5174                    "This is modeled as a QoSSubService that is part of a "
5175                    "higher-level QoSService. It is a subclass of Conditioning"
5176                    "Service and has the ability to drop traffic or invoke "
5177                    "another ConditioningServices for further processing of the "
5178                    "remaining traffic.") ] 
5179           class CIM_REDDropperService : CIM_DropperService {
5180                   [Description (
5181                    "This property is a 32-bit unsigned integer, and is used "
5182                    "to define the minimum queue length at which packets are "
5183                    "subject to being dropped according to the dropping "
5184                    "algorithm being used.") ]
5185               uint32 MinQueueThreshold;
5186                   [Description (
5187                    "This property is a 32-bit unsigned integer, and is used "
5188 karl  1.2          "to define the maximum queue length at which packets are "
5189                    "subject to always being dropped regardless of the dropping "
5190                    "algorithm being used.") ]
5191               uint32 MaxQueueThreshold;
5192                   [Description (
5193                    "This property is a 32-bit real number, and is used in "
5194                    "conjunction with the StopProbability attribute to define "
5195                    "the slope of the drop probability function. The latter "
5196                    "governs the rate at which packets are subject to being "
5197                    "dropped, as a function of the queue length."),
5198                    MinValue (0), MaxValue (100),
5199                    ModelCorrespondence {
5200                     "CIM_REDDropperService.StopProbability"} ]
5201               real32 StartProbability;
5202                   [Description (
5203                    "This property is a 32-bit real number, and is used in "
5204                    "conjunction with the StartProbability attribute to define "
5205                    "the slope of the drop probability function. The latter "
5206                    "governs the rate at which packets are subject to being "
5207                    "dropped, as a function of the queue length."),
5208                    MinValue (0), MaxValue (100),
5209 karl  1.2          ModelCorrespondence {
5210                     "CIM_REDDropperService.StartProbability"} ]
5211               real32 StopProbability;
5212           };
5213           
5214           // ===================================================================
5215           //     WeightedREDDropperService
5216           // ===================================================================
5217                   [Version ("2.6.0"), Description (
5218                    "This class represents a logical entity that resides in the "
5219                    "data forwarding path of a network device. It describes the "
5220                    "ability to drop network traffic using a Weighted Random "
5221                    "Early Detection (WRED) algorithm. Like RED, the purpose of "
5222                    "WRED is to avoid congestion (as opposed to managing "
5223                    "congestion). This modification of the basic RED algorithm "
5224                    "enables packets belonging to different traffic classes to "
5225                    "be dropped at different queue depths. This algorithm also "
5226                    "enables discard to be done based on different information "
5227                    "contained in the packet header, such as IP Precedence, "
5228                    "RSVP session parameters, or even on other factors not "
5229                    "directly encoded in the packet header, such as the "
5230 karl  1.2          "queue depth. "
5231                    "\n\n"
5232                    "This is modeled as a QoSSubService that is part of a "
5233                    "higher-level QoSService. It is a subclass of Conditioning"
5234                    "Service and has the ability to drop traffic or invoke "
5235                    "another ConditioningServices for further processing of the "
5236                    "remaining traffic.") ]
5237           class CIM_WeightedREDDropperService : CIM_DropperService {
5238                   [Description (
5239                    "This property is an enumerated 16-bit unsigned integer, "
5240                    "and defines the type of metric that is used to drop "
5241                    "traffic.  Values are: "
5242                    "\n\n"
5243                    "   1:  Other \n"
5244                    "   2:  IP Precedence \n"
5245                    "   3:  DSCP Value \n"
5246                    "   4:  802.1P Priority Value \n"
5247                    "   5:  RSVP Session \n"
5248                    "   6:  Queue Depth \n"
5249                    "   7:  Packet Arrival Rate "),
5250                    ValueMap {"1", "2", "3", "4", "5", "6", "7"},
5251 karl  1.2          Values {"Other", "IP Precedence", "DSCP Value", 
5252                     "802.1P Priority Value", "RSVP Session", 
5253                     "Queue Depth", "Packet Arrival Rate"},  
5254                    ModelCorrespondence {
5255                     "CIM_WeightedREDDropperService.OtherDropMetric"} ]
5256               uint16 DropMetric;
5257                   [Description (
5258                    "This string property is used in conjunction with the "
5259                    "DropMetric property. When the value of DropMetric is "
5260                    "1 (i.e., \"Other\"), then the type of metric to be used "
5261                    "is defined in this property."),
5262                    ModelCorrespondence {
5263                     "CIM_WeightedREDDropperService.DropMetric"} ]
5264               string OtherDropMetric;
5265                   [Description (
5266                    "This is a 32-bit real number that represents the "
5267                    "weighting factor used to determine which queues "
5268                    "get more service."), 
5269                    MinValue (0), MaxValue (100) ]
5270               real32 Weight;
5271           };
5272 karl  1.2 
5273           // ===================================================================
5274           //     QueuingService
5275           // ===================================================================
5276                   [Version ("2.6.0"), Description (
5277                    "This class represents a logical entity that resides in the "
5278                    "data forwarding path of a network device. It describes the "
5279                    "ability to queue network traffic and to specify the "
5280                    "characteristics for determining long-term congestion. "
5281                    "\n\n"
5282                    "This is modeled as a QoSSubService that is part of a "
5283                    "higher-level QoSService. It is a subclass of Conditioning"
5284                    "Service and has the ability to queue traffic or invoke "
5285                    "another ConditioningServices for further processing.") ]
5286           class CIM_QueuingService : CIM_ConditioningService {
5287                   [Description (
5288                    "This property is a 32-bit real number, and defines the "
5289                    "degree to which each actual queue depth influences the "
5290                    "averaged (smoothed) queue depth used for determining "
5291                    "long-term congestion in RED-like droppers. This "
5292                    "property is specified as the percentage/weight that "
5293 karl  1.2          "each calculation of averaged queue depth influences "
5294                    "the new value of average depth."), 
5295                    MinValue (0), MaxValue (100) ]
5296               real32 SmoothingWeight;
5297                   [Description (
5298                    "This property is a 32-bit unsigned integer, and defines "
5299                    "the number of nano-seconds between each calculation of "
5300                    "average queue depth. When this property is not specified, "
5301                    "it implies that the calculation is performed every time a "
5302                    "packet departs from the queue under normal operating "
5303                    "conditions. In other words, if the queue is serviced "
5304                    "intermittently, the calculations will be performed "
5305                    "logically to simulate a consistent queue servicing "
5306                    "interval."),
5307                    Units ("NanoSeconds") ]
5308               uint32 TimeInterval;
5309                   [Description (
5310                    "This property is a boolean attribute that, if TRUE, "
5311                    "enables the queue to be made available to other "
5312                    "queue/scheduler instances. When true, the queue "
5313                    "can be used to hold packets from other traffic "
5314 karl  1.2          "classes than normally serviced. For example, assume "
5315                    "that queues for Gold, Silver and Bronze traffic "
5316                    "classes are defined.  Further assume that the "
5317                    "Silver queue is full and the others are empty. If "
5318                    "this boolean is set for the Gold and Bronze queues, "
5319                    "their capacity can be used to hold Silver traffic, "
5320                    "as opposed to dropping it.") ]
5321               boolean GiveExcessCapacity;
5322           };
5323           
5324           // ==================================================================
5325           //    QueueHierarchy
5326           // ==================================================================
5327                   [Association, Version ("2.6.0"), Description (
5328                    "Describes the reliance of a QueuingService on other, "
5329                    "supporting queues and their QueuingServices. A given Service "
5330                    "can only act in support of one QueuingService; but a "
5331                    "higher level queue may be supported by many lower level "
5332                    "QueuingServices.") ] 
5333           class CIM_QueueHierarchy : CIM_ServiceServiceDependency {
5334                   [Override ("Antecedent"), Description (
5335 karl  1.2          "The supporting queue(s) and its QueuingService. This Service "
5336                    "can only support at most one, higher level QueuingService.") ]
5337               CIM_QueuingService REF Antecedent;
5338                   [Override ("Dependent"), Max (1), Description (
5339                    "The QueuingService dependent on other, supporting Queuing"
5340                    "Services.") ]
5341               CIM_QueuingService REF Dependent;
5342           };
5343           
5344           // ===================================================================
5345           //     BufferPool
5346           // ===================================================================
5347                   [Version ("2.6.0"), Description (
5348                    "This class represents the use of buffers by a Queuing"
5349                    "Service. The existence and management of individual buffers "
5350                    "will be modeled in a future release. At the current level "
5351                    "of abstraction, modeling the existence of the BufferPool "
5352                    "is necessary.  Long term, it is not sufficient."
5353                    "\n\n"
5354                    "In implementations where there are multiple "
5355                    "buffer sizes, an instance of BufferPool should be "
5356 karl  1.2          "defined for each set of buffers with identical or similar "
5357                    "sizes. These instances of buffer pools can then be grouped "
5358                    "together using the CollectedBuffersPool association. "
5359                    "\n\n"
5360                    "Note that this class is derived from CollectionOfMSEs, "
5361                    "and not from Forwarding or ConditioningService. BufferPool "
5362                    "is only a collection of storage, and is NOT a Service.") ]
5363           class CIM_BufferPool : CIM_CollectionOfMSEs {
5364                   [Key, Override ("CollectionID"), MaxLen (256), 
5365                    Description (
5366                    "This property is defined in the CollectionOfMSEs class, "
5367                    "but is overridden here to serve as part of the " 
5368                    "(composite) key that identifies the BufferPool instance.") ]
5369               string CollectionID;
5370                   [Key, MaxLen (256), Description (
5371                    "CreationClassName indicates the name of the class or the "
5372                    "subclass used in the creation of an instance. When used "
5373                    "with the other key properties of this class, this property "
5374                    "allows all instances of this class and its subclasses to "
5375                    "be uniquely identified.") ]
5376               string CreationClassName;
5377 karl  1.2         [MaxLen (256), Description (
5378                    "The Name property defines the label by which the object "
5379           	   "is known.") ] 
5380               string Name;
5381                   [Description (
5382                    "This property is a 16-bit unsigned integer, and defines "
5383                    "the number of bytes in each buffer.") ]
5384               uint16 BufferSize;
5385                   [Description (
5386                    "This property is a 32-bit unsigned integer, and defines "
5387                    "the total number of buffers in the Pool.") ]
5388               uint32 TotalBuffers;
5389                   [Description (
5390                    "This property is a 32-bit unsigned integer, and defines "
5391                    "the number of buffers in the Pool that are currently "
5392                    "not allocated to any instance of a QueuingService. "
5393                    "Buffers allocated to a QueuingService could either be "
5394                    "in use (containing packet data), or allocated to a Queue "
5395                    "pending the arrival of new packet data.") ]
5396               uint32 AvailableBuffers;
5397                   [Description (
5398 karl  1.2          "This property is a 32-bit unsigned integer, and defines "
5399                    "the number of buffers in the Pool that have been "
5400                    "simultaneously allocated to multiple instances of "
5401                    "QueuingService.") ]
5402               uint32 SharedBuffers;
5403           };
5404           
5405           // ==================================================================
5406           //    QueueAllocation
5407           // ==================================================================
5408                   [Association, Version ("2.6.0"), Description (
5409                    "Describes the reliance of a QueuingService on the "
5410                    "availability of space in a BufferPool.") ] 
5411           class CIM_QueueAllocation : CIM_Dependency {
5412                   [Override ("Antecedent"), Description (
5413                    "The BufferPool supporting packet storage for a "
5414                    "QueuingService.") ]
5415               CIM_BufferPool REF Antecedent;
5416                   [Override ("Dependent"), Description (
5417                    "The QueuingService dependent on the BufferPool for storage "
5418                    "space.") ]
5419 karl  1.2     CIM_QueuingService REF Dependent;
5420           };
5421           
5422           // ==================================================================
5423           //    CollectedBufferPool
5424           // ==================================================================
5425                   [Association, Aggregation, Version ("2.6.0"), 
5426                    Description (
5427                    "CIM_CollectedBufferPool is an aggregation association "
5428                    "representing that a Pool may itself be contained "
5429                    "in a 'higher level' Pool.") ]
5430           class CIM_CollectedBufferPool : CIM_MemberOfCollection {
5431                   [Override("Collection"), Aggregate, 
5432                    Description ("The 'higher level' or parent Pool.") ]
5433              CIM_BufferPool REF Collection;
5434                   [Override("Member"),
5435                    Description ("The 'collected' Pool.") ]
5436              CIM_BufferPool REF Member;
5437           };
5438           
5439           // ===================================================================
5440 karl  1.2 //     PacketSchedulingService
5441           // ===================================================================
5442                   [Version ("2.6.0"), Description (
5443                    "This class represents the scheduling service, which is a "
5444                    "process that determines whether a queued packet should be "
5445                    "removed from a queue and sent to an output interface. Note "
5446                    "that output interfaces can be physical network interfaces or "
5447                    "interfaces to components internal to systems, such as "
5448                    "crossbars or backplanes. In either case, if multiple queues "
5449                    "are involved, schedulers are used to provide access to the "
5450                    "interface. Each instance of a PacketSchedulingService "
5451                    "describes a scheduler from the perspective of the queue "
5452                    "that the scheduler is servicing. One can describe that "
5453                    "different schedulers support different queues, or that "
5454                    "a scheduler supports several queues. "
5455                    "\n\n"
5456                    "PacketSchedulingService is modeled as a sibling service "
5457                    "to ConditioningService. Both are derived from a common "
5458                    "root, ForwardingService.") ]
5459           class CIM_PacketSchedulingService : CIM_ForwardingService {
5460                   [Description (
5461 karl  1.2          "This property is an enumerated 16-bit unsigned integer, and "
5462                    "defines the type of scheduler. Values are: "
5463                    "\n\n"
5464                    "   1:  Other \n"
5465                    "   2:  FIFO \n"
5466                    "   3:  Priority \n"
5467                    "   4:  Bandwidth \n"
5468                    "   5:  Priority Bandwidth \n"
5469                    "   6:  Round Robin Packet \n"
5470                    "   7:  Weighted Round Robin Packet. "
5471                    "\n\n"
5472                    "Note: The SchedulerType property and the Scheduler"
5473                    "Service subclasses provide similar information. This "
5474                    "property is defined for query purposes and to not require "
5475                    "a subclass for all types of SchedulerServices (for "
5476                    "example, to describe a FIFO Scheduler in today's model). "
5477                    "Therefore, SchedulerService can be instantiated directly "
5478                    "and the Type property is needed."),
5479                    ValueMap {"1", "2", "3", "4", "5", "6", "7"},
5480                    Values {"Other", "FIFO", "Priority", "Bandwidth", 
5481                     "Priority Bandwidth", "Round Robin Packet",
5482 karl  1.2           "Weighted Round Robin Packet"},
5483                    ModelCorrespondence {
5484                     "CIM_PacketSchedulingService.SchedulerType"} ]
5485               uint16 SchedulerType;
5486                   [Description (
5487                    "This string property is used in conjunction with "
5488                    "the SchedulerType property. When the value of "
5489                    "SchedulerType is 1 (i.e., \"Other\"), then the type of "
5490                    "metric to be used is defined in this attribute."),
5491                   ModelCorrespondence {
5492                    "CIM_ PacketSchedulingService.SchedulerType"} ]
5493               string OtherSchedulerType;
5494           };
5495           
5496           // ==================================================================
5497           //    SchedulerUsed
5498           // ==================================================================
5499                   [Association, Version ("2.6.0"), Description (
5500                    "In order to remove queued packets, a process or Service "
5501                    "(identified as a PacketSchedulingService) runs.  This "
5502                    "association describes the Dependency of the queue and its "
5503 karl  1.2          "QueuingService on a SchedulingService, which empties it.") ]
5504           class CIM_SchedulerUsed : CIM_ServiceServiceDependency {
5505                   [Override ("Antecedent"), Min (1), Max (1), 
5506                    Description (
5507                    "The PacketSchedulingService which empties the Queuing"
5508                    "Service's queue.") ]
5509               CIM_PacketSchedulingService REF Antecedent;
5510                   [Override ("Dependent"), Description (
5511                    "The queue and its QueuingService from which packets "
5512                    "are emptied.") ]
5513               CIM_QueuingService REF Dependent;
5514           };
5515           
5516           // ===================================================================
5517           //     PrioritySchedulingService
5518           // ===================================================================
5519                   [Version ("2.6.0"), Description (
5520                    "This class represents a simple priority scheduler, which is "
5521                    "a process that schedules arriving packets into different "
5522                    "priority queues. "
5523                    "\n\n"
5524 karl  1.2          "This is modeled as a specialization of the "
5525                    "PacketSchedulingService, which is a sibling service to "
5526                    "ConditioningService. Both PacketSchedulingService and "
5527                    "ConditioningService instances are derived from a "
5528                    "common root, ForwardingService.") ]
5529           class CIM_PrioritySchedulingService : CIM_PacketSchedulingService {
5530                   [Description (
5531                    "This property is a 16-bit unsigned integer that defines "
5532                    "the priority level of the queue that is being scheduled.") ]
5533               uint16 Priority;
5534           };
5535           
5536           // ===================================================================
5537           //     PriorityBandwidthSchedulingService
5538           // ===================================================================
5539                   [Version ("2.6.0"), Description (
5540                    "This class represents a priority scheduler that is extended "
5541                    "to specify an upper limit on the bandwidth that can be sent "
5542                    "on the priority queue, over some time interval."
5543                    "\n\n"
5544                    "This is modeled as a specialization of the "
5545 karl  1.2          "PacketSchedulingService, which is a sibling service to "
5546                    "ConditioningService. Both PacketSchedulingService and "
5547                    "ConditioningService instances are derived from a "
5548                    "common root, ForwardingService.") ]
5549           class CIM_PriorityBndwidthSchedulingService : 
5550            CIM_PrioritySchedulingService {
5551                   [Description (
5552                    "This property is a 32-bit unsigned integer, and defines "
5553                    "the number of bytes that can be delivered from a queue each "
5554                    "cycle."),
5555                    Units ("Bytes") ]
5556               uint32 BandwidthAllocation;
5557                   [Description (
5558                    "This is a boolean property which, if TRUE, signifies that a "
5559                    "temporary or short-term allocation of additional bandwidth "
5560                    "in addition to the amount of bandwidth allocated through the "
5561                    "BandwidthAllocation attribute is allowed.") ]
5562               boolean BurstsAllowed;
5563                   [Description (
5564                    "This property is a 32-bit unsigned integer, and specifies "
5565                    "the amount of temporary or short-term bandwidth that can be "
5566 karl  1.2          "allocated beyond the amount of bandwidth allocated through "
5567                    "the BandwidthAllocation attribute. If the maximum actual "
5568                    "bandwidth allocation were to be measured, it would be the "
5569                    "sum of the BurstAllocation and the BandwidthAllocation "
5570                    "properties."),
5571                    Units ("Bytes") ]
5572               uint32 BurstAllocation;
5573           };
5574           
5575           // ===================================================================
5576           //     BandwidthSchedulingService
5577           // ===================================================================
5578                   [Version ("2.6.0"), Description (
5579                    "This class represents a bandwidth scheduler, which is a "
5580                    "process that reserves a portion of the bandwidth of a link "
5581                    "for each selected traffic type. This is modeled as a "
5582                    "specialization of the PacketSchedulingService, which is a "
5583                    "sibling service to ConditioningService. Both "
5584                    "PacketSchedulingService and ConditioningService instances "
5585                    "are derived from a common root, ForwardingService.") ]
5586           class CIM_BandwidthSchedulingService : CIM_PacketSchedulingService {
5587 karl  1.2         [Description (
5588                    "This property is a 32-bit unsigned integer, and defines "
5589                    "the number of bytes that can be delivered from a queue "
5590                    "each cycle."),
5591                    Units ("Bytes") ]
5592               uint32 BandwidthAllocation;
5593                   [Description (
5594                    "This is a boolean attribute which, if TRUE, signifies that "
5595                    "a temporary or short-term allocation of additional bandwidth "
5596                    "in addition to the amount of bandwidth allocated through the "
5597                    "BandwidthAllocation attribute is allowed.") ]
5598               boolean BurstsAllowed;
5599                   [Description (
5600                    "This property is a 32-bit unsigned integer, and specifies "
5601                    "the amount of temporary or short-term bandwidth that can be "
5602                    "allocated beyond the amount of bandwidth allocated through "
5603                    "the BandwidthAllocation attribute. If the maximum actual "
5604                    "bandwidth allocation were to be measured, it would be the "
5605                    "sum of the BurstAllocation and the BandwidthAllocation "
5606                    "properties."),
5607                    Units ("Bytes") ]
5608 karl  1.2     uint32 BurstAllocation;
5609                   [Description (
5610                    "This is a boolean attribute that, if TRUE, enables unused "
5611                    "bandwidth from the associated queue to be allocated to "
5612                    "queues that need additional resources.") ]
5613               boolean CanShare;
5614                   [Description (
5615                    "This is a boolean attribute that, if TRUE, prevents the "
5616                    "scheduler from bursting traffic from the queue to which this "
5617                    "instance of the scheduler is associated (via SchedulerUsed). "
5618                    "When TRUE, this attribute also prevents bandwidth from other "
5619                    "idle queues to be consumed by the associated queue, thereby "
5620                    "preventing resource allocations above the assigned "
5621                    "bandwidth.") ]
5622               boolean WorkConserving;
5623           };
5624           
5625           // ===================================================================
5626           //     RoundRobinPacketSchedulingService
5627           // ===================================================================
5628                   [Version ("2.6.0"), Description (
5629 karl  1.2          "This class represents a round robin packet scheduler, which "
5630                    "is a process that guarantees that bandwidth will be "
5631                    "allocated fairly at the packet level. With this type of "
5632                    "scheduler, each associated queue is entitled to equal access "
5633                    "to the output interface. This is modeled as a specialization "
5634                    "of the PacketSchedulingService, which is a sibling service "
5635                    "to ConditioningService. Both PacketSchedulingService and "
5636                    "ConditioningService are derived from a common root, "
5637                    "ForwardingService.") ]
5638           class CIM_RoundRobinPacketSchedulingService : 
5639            CIM_PacketSchedulingService {
5640           };
5641           
5642           // ===================================================================
5643           //     WeightedRoundRobinPacketSchedulingService
5644           // ===================================================================
5645                   [Version ("2.6.0"), Description (
5646                    "This class represents a weighted round robin packet "
5647                    "scheduler, which is the same as a fair packet scheduler "
5648                    "except that a per-traffic stream multiplier is applied to "
5649                    "each stream. This is modeled as a specialization of the "
5650 karl  1.2          "PacketSchedulingService, which is a sibling service to "
5651                    "ConditioningService. Both PacketSchedulingService and "
5652                    "ConditioningService are derived from a common root, "
5653                    "ForwardingService.") ]
5654           class CIM_WeightedRoundRobinPacketSchedulingService : 
5655             CIM_PacketSchedulingService {
5656                   [Description (
5657                    "This property is a real 32-bit number, which is used to "
5658                    "define the weighting factor that will be used to offer some "
5659                    "queues a higher probability of being serviced than other "
5660                    "queues. This property represents this probability."),
5661                    MinValue (0), MaxValue (100) ]
5662               real32 WeightingFactor;
5663                   [Description (
5664                    "This property is a 16-bit unsigned integer, which specifies "
5665                    "a tie breaker in the event that two or more queues achieve "
5666                    "an equal weighting. While this condition may not occur in "
5667                    "some implementations of a weighted round robin scheduler, "
5668                    "there are many implementations that require a priority to "
5669                    "resolve this condition. However, in instances where this "
5670                    "behavior is not necessary or is undesirable, this property "
5671 karl  1.2          "may be left unspecified.") ]
5672               uint16 Priority;
5673           };
5674           
5675            
5676           // ===================================================================
5677           // end of file
5678           // ===================================================================

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2