// Copyright (c) 2005 DMTF.  All rights reserved.
   [Version ( "2.7.0" ), 
    UMLPackagePath ( "CIM::Network::RoutingForwarding" ), 
    Description ( 
       "This class is used to implement routing policies. It "
       "aggregates a set of FilterLists, along with other appropriate "
       "constructs, into a unit. One of the most important uses of "
       "this class is to change the routing policy by changing values "
       "of various attributes in a consistent manner. \n"
       "\n"
       "A RoutingPolicy is weak to the network device (i.e., the "
       "ComputerSystem) that contains it. Hence, the ComputerSystem "
       "keys are propagated to this class. \n"
       "\n"
       "Note that this class was defined before the Policy Model and "
       "hence is not positioned in that hierarchy. The class will be "
       "repositioned in a later release of the Network Model." )]
class CIM_RoutingPolicy : CIM_LogicalElement {

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

      [Key, Description ( "The scoping ComputerSystem\'s Name." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_ComputerSystem.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." ), 
       MaxLen ( 256 )]
   string CreationClassName;

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

      [Description ( 
          "This defines the type of action that will be performed "
          "if the match conditions of the policy are met. The match "
          "conditions are defined by the associated ListsIn "
          "RoutingPolicy. There are essentially three choices: "
          "forward the traffic unmodified, forward the traffic but "
          "modify either the attributes describing the route and/or "
          "other attributes that define how to condition the "
          "traffic (e.g., its ToS byte settings), or prevent the "
          "traffic from being forwarded." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9" }, 
       Values { "Accept As Is", 
          "Accept With Protocol Attribute Changes", 
          "Accept and Remark Packet", 
          "Accept With Protocol Attribute Changes and Remark", 
          "Accept With Other Action", 
          "Accept With Protocol Attribute Changes and Other Action", 
          "Accept with Remark and Other Action", 
          "Accept with Protocol Attribute Changes, Remark and Other Action", 
          "Deny" }]
   uint16 Action;

      [Description ( 
          "This controls whether protocol-specific attributes "
          "replace, get prepended, or get appended to their "
          "existing values." ), 
       ValueMap { "1", "2", "3" }, 
       Values { "Replace", "Prepend", "Append" }, 
       ModelCorrespondence { "CIM_RoutingPolicy.BGPAction" }]
   uint16 AttributeAction;

      [Description ( 
          "This defines one or more BGP-specific attributes that "
          "should be used to modify this routing update." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }, 
       Values { "Origin", "AS_Path", "NEXT_HOP", "Multi_Exit_Disc", 
          "Local_Pref", "Atomic_Aggregate", "Aggregator", 
          "Community", "Originator_ID", "Cluster_List" }, 
       ModelCorrespondence { "CIM_RoutingPolicy.BGPValue" }]
   uint16 BGPAction;

      [Description ( "The value for the corresponding BGPAction." ), 
       ModelCorrespondence { "CIM_RoutingPolicy.BGPAction" }]
   string BGPValue;

      [Description ( 
          "This defines a remarking action for this traffic." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7" }, 
       Values { "Change DSCP", "Change ToS", "Change 802.1Q Value", 
          "Change CIR", "Change CBR", "Change ABR", "Change VBR" }, 
       ModelCorrespondence { "CIM_RoutingPolicy.RemarkValue" }]
   uint16 RemarkAction;

      [Description ( "The value for the corresponding RemarkAction." ), 
       ModelCorrespondence { "CIM_RoutingPolicy.RemarkAction" }]
   string RemarkValue;

      [Description ( 
          "This defines another action to be taken for this traffic." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7" }, 
       Values { "Other", "Input Flow Policing", 
          "Output Flow Policing", "Input Aggregate Policing", 
          "Output Aggregate Policing", "Police By Marking Down", 
          "Police By Dropping Down" }, 
       ModelCorrespondence { "CIM_RoutingPolicy.ConditioningValue", 
          "CIM_RoutingPolicy.OtherConditioningAction" }]
   uint16 ConditioningAction;

      [Description ( 
          "If the value of the ConditioningAction property of this "
          "class is 1, this contains an application-specific type "
          "of conditioning that is to be performed. Otherwise, if "
          "the ConditioningAction property is any other value, the "
          "value of this property should be NULL." ), 
       ModelCorrespondence { "CIM_RoutingPolicy.ConditioningAction" }]
   string OtherConditioningAction;

      [Description ( 
          "The value for the corresponding ConditioningAction, if "
          "appropriate." ), 
       ModelCorrespondence { "CIM_RoutingPolicy.ConditioningAction" }]
   string ConditioningValue;


};
