// Copyright (c) 2005 DMTF.  All rights reserved.
   [Version ( "2.6.0" ), 
    UMLPackagePath ( "CIM::Network::Systems" ), 
    Description ( 
       "An Autonomous System (AS) is a fundamental concept in "
       "networking. An AS provides a structured view of routing by "
       "segregating the system that is using routing (e.g., the "
       "Internet, or an extranet) into a set of separately "
       "administered domains that each have their own independent "
       "routing policies. These domains are called autonomous systems. \n"
       "\n"
       "The classic definition of an AS, from RFC1771, is \'...a set "
       "of routers under a single technical administration, using an "
       "interior gateway protocol and common metrics to route packets "
       "within the AS, and using an exterior gateway protocol to route "
       "packets to other ASs\'. The RFC continues: \'Since this "
       "classic definition was developed, it has become common for a "
       "single AS to use several interior gateway protocols and "
       "sometimes several sets of metrics within an AS. The use of the "
       "term Autonomous System here stresses the fact that, even when "
       "multiple IGPs and metrics are used, the administration of an "
       "AS appears to other ASs to have a single coherent interior "
       "routing plan and presents a consistent picture of what "
       "destinations are reachable through it.\'" )]
class CIM_AutonomousSystem : CIM_AdminDomain {

      [Description ( 
          "An ASNumber is an integer between 1 and 65535, with the "
          "range 64512 through 65535 reserved for private use. "
          "Every AS has a unique AS number, which is assigned to it "
          "by an Internet Registry or a provider. IANA assigns and "
          "administers AS numbers." )]
   uint16 ASNumber;

      [Description ( 
          "IsSingleHomed is a boolean that, when its value is TRUE, "
          "indicates that this AS reaches networks outside of its "
          "domain through a single exit point." )]
   boolean IsSingleHomed;

      [Description ( 
          "IsTransit is a boolean that, when its value is TRUE, "
          "indicates that this AS will advertise routes that it "
          "learns from other ASs. A non-transit AS will only "
          "advertise its own routes." )]
   boolean IsTransit;

      [Description ( 
          "RequireIGPSync is a boolean that, when its value is "
          "TRUE, indicates that this AS must obey the following "
          "rule: a router should not advertise destinations learned "
          "from internal neighbors to external destinations unless "
          "those destinations are also known via some internal "
          "gateway protocol. Otherwise, a router may receive "
          "traffic that cannot yet be routed. However, since this "
          "is a costly choice, it is common practice to allow this "
          "rule to be broken under certain carefully controlled "
          "circumstances." )]
   boolean RequireIGPSync;

      [Description ( 
          "RoutingUpdateSource defines how routing information is "
          "to be injected. Statically injected routes are "
          "maintained by the routing table and are independent of "
          "the status of the networks to which they refer. This is "
          "done simply by defining static routes in the routing "
          "table. Dynamically injected routes are of two types. "
          "Dynamic routes refer to distributing all of the IGP "
          "routes. Semi-dynamic routes define a set of specific IGP "
          "routes that will be injected." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Unknown", "Static", "Dynamic", "Semi-Dynamic" }]
   uint16 RoutingUpdateSource;

      [Description ( 
          "Route aggregation refers to summarizing ranges of routes "
          "into one or more aggregate routes. This is done to "
          "minimize the number of routes in the global routing "
          "table. A potential drawback is that specific path "
          "information (e.g., the Path attribute value) is lost, "
          "which may lead to potential routing loops. There are a "
          "variety of ways to ensure that this does not happen. "
          "Note that BGP4 is required to do this. \n"
          "\n"
          "There are many ways to form aggregate routes. The "
          "following are the most popular: \'Aggregate only\', "
          "where only the aggregate is advertised, and all of its "
          "more specific routes are suppressed; \'Aggregate Plus "
          "Specific Routes\', where both the aggregate as well as "
          "its more specific routes are advertised (e.g., send the "
          "aggregate to the NAP, but send the more specific routes "
          "to providers); \'Aggregate Based on a Subset of Specific "
          "Routes\', where the aggregate route is formed by looking "
          "at certain more specific routes and forming an aggregate "
          "on them, suppressing all others." ), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "None", "Aggregate Only", 
          "Aggregate And All Specific Routes", 
          "Aggregate Based on Subset of Specific Routes" }]
   uint16 AggregationType;


};
