// Copyright (c) 2005 DMTF.  All rights reserved.
   [Version ( "2.7.0" ), 
    UMLPackagePath ( "CIM::Network::BGP" ), 
    Description ( 
       "A route map is used to control and modify routing information "
       "as well as to define when a route is redistributed between "
       "routing domains. Route maps are placed in router configuration "
       "files, and several instances of the same route map may be used "
       "to implement different actions. RouteMaps MAY use FilterLists "
       "to identify the route. \n"
       "\n"
       "A BGPRouteMap is specific to a given AutonomousSystem that "
       "contains it. Hence, the keys of the AutonomousSystem are "
       "propagated to this class." )]
class CIM_BGPRouteMap : CIM_LogicalElement {

      [Key, Description ( 
          "The scoping AutonomousSystem\'s CreationClassName." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_AutonomousSystem.CreationClassName" )]
   string SystemCreationClassName;

      [Key, Description ( "The scoping AutonomousSystem\'s Name." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_AutonomousSystem.Name" )]
   string SystemName;

      [Key, Description ( 
          "CreationClassName indicates the name of the class or the "
          "subclass used in the creation of an instance. When used "
          "with the other key properties of this class, this "
          "property allows all instances of this class and its "
          "subclasses to be uniquely identified." )]
   string CreationClassName;

      [Key, Override ( "Name" ), 
       Description ( "This is the name of the RouteMap class." ), 
       MaxLen ( 256 )]
   string Name;

      [Description ( 
          "This defines whether this RouteMap is used for input, "
          "output, or both input and output filtering." ), 
       ValueMap { "1", "2", "3" }, 
       Values { "Input", "Output", "Both" }]
   uint16 Direction;

      [Description ( 
          "This defines whether the action should be to forward or "
          "deny traffic meeting the match condition specified in "
          "this RouteMap." ), 
       ValueMap { "1", "2" }, 
       Values { "Permit", "Deny" }]
   uint16 Action;

      [Description ( 
          "This specifies the criteria that must be matched in "
          "order for the corresponding MatchAction to take effect. "
          "The matching of the criteria may be specified by using a "
          "FilterList. For example, the command \'match ip address "
          "foo\' uses the FilterList named \'foo\' to do the "
          "matching of IP addresses." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9" }, 
       Values { "Other", "Source Address and Mask", 
          "Destination Address and Mask", "Source Port", 
          "Source Port Range", "Destination Port", 
          "Destination Port Range", "Protocol Type", 
          "Protocol Type and Option" }, 
       ModelCorrespondence { 
          "CIM_BGPRouteMap.OtherMatchConditionType" }]
   uint16 MatchConditionType;

      [Description ( 
          "If the value of the MatchConditionType property in this "
          "class is 1 (i.e., \"Other\"), then the specific type of "
          "filtering is specified in this property." ), 
       ModelCorrespondence { "CIM_BGPRouteMap.MatchConditionType" }]
   string OtherMatchConditionType;

      [Description ( 
          "This defines an additional action to take if the "
          "MatchCondition is satisfied. This definition is "
          "specifically limited to BGP filtering at this time. The "
          "actual value of the metric is specified in the "
          "SetMetricValue property." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9" }, 
       Values { "Origin", "AS_Path", "NEXT_HOP", "Multi_Exit_Disc", 
          "Local_Pref", "Atomic_Aggregate", "Aggregator", 
          "Community", "Originator_ID" }, 
       ModelCorrespondence { "CIM_BGPRouteMap.SetMetricValue" }]
   uint16 SetMetricType;

      [Description ( 
          "This is the value of the metric that is being set for "
          "the BGP attribute defined in the SetMetricType property." )]
   string SetMetricValue;


};
