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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2