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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2