 /************************************************************************
*                                                                       *
*               INTEL CORPORATION PROPRIETARY INFORMATION               *
*  This software is supplied under the terms of a license agreement or  *
*  nondisclosure agreement with Intel Corporation and may not be copied *
*   or disclosed except in accordance with the terms of that agreement. *
*        Copyright (c) 2008 Intel Corporation. All Rights Reserved.     *
*                                                                       *
************************************************************************/
/***********************************************************************\
*
* NAME:	Ncs2ITm.mof	
* 
* DESCRIPTION: Master MOF file with class definitions for the 
*			   Intel PRO Network Adapter Teams (802.3 schema).
*
* PREREQUISITE: Ncs2Cm.mof and Ncs2ICr.mof  [In that order]
*
* NOTE:	This file generates language neutral MOF for IntelNCS2 namespace.
*		This file also generates ENU language specific MFL. 
*
\***********************************************************************/

#pragma namespace ("\\\\.\\Root\\IntelNCS2")


// ============================================================================
// Logical Ethernet Adapter Class
// ============================================================================
[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), 
Description("IANet_LogicalEthernetAdapter concrete class objectifies "
"the general network characteristics of the Intel NIC Team portrayed as a Logical NIC. In this class, "
"the lower level networking properties are presented."):Amended,  LOCALE(0x409)
]
class IANet_LogicalEthernetAdapter : IANet_EthernetAdapter
{

};


// ============================================================================
// Team of Adapters Class
// ============================================================================
		[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), 
		 Description("IANet_TeamOfAdapters class objectifies "
		 "the team properties of an AFT or other team. These are the properties which "
		 "cannot be attributed to a particular adapter in the team."):Amended,  LOCALE(0x409)
		]
class IANet_TeamOfAdapters : CIM_ExtraCapacityGroup
{
	[Override ("TeamPrefix"), Description (
	"Team Prefix contains the prefix for all team names."):Amended, 
	ArrayType ("Indexed"),
	Values {
	/* 0 */ "TEAM : ", 
	/* 1 */ "Reserved"
	} : Amended]
    uint16 TeamPrefix[];
    
    
	[Description("AdapterCount is the number of adapters currently in "
	"this team."):Amended
	] 	
 	uint32 AdapterCount;

	[Description("MaxAdapterCount is the maximum number of adapters that can "
	"be placed in this team."):Amended]
	uint32 MaxAdapterCount;

	[Read, Write, Description("TeamingMode is the type of the current team."):Amended,
	ValueMap {"0", "1", "2", "4", "5", "15","68","255"}:Amended , 
	Values {"AFT", "ALB", "SLA", "IEEE 802.3ad", "SFT", "VMLB", "Detect Mode", "Unknown"}:Amended ] 	 
    uint32 TeamingMode;
	
	[Description("MFOEnabled represents the MFO enabled/disabled in the current "		"team."):Amended]
	boolean MFOEnabled;
	
	[Description("LinksecEnabled is set to true if all the members on the team are LinksecMode enabled."):Amended]
	boolean LinksecEnabled;
	
	[Description("TeamMacAddress is the configured MAC address of "
	"this team."):Amended
	] 	
 	string TeamMacAddress;
 	
 	[Description("BoundToHyperV represents the Hyper-V enabled/disabled in the current team. "):Amended] 	
 	boolean BoundToHyperV;

	[Description (
	"TestSwitchConfiguration tests the switch configuration to make sure that the team "
	"is functioning correctly with the switch. This test could be used to ensure that "
	"link partners i.e. a device that an adapter links to, such as another adapter, "
	"a hub, a switch, etc. support the chosen adapter teaming mode. For example, if "
	"the adapter is a member of a Link Aggregation team, this test can verify that "
	"link partners connected to the adapter support Link Aggregation." 
	):Amended, implemented 
	]
	uint32 TestSwitchConfiguration(
		   [	IN, 
                ValueMap {"0","1","2"}:Amended, 
                Values {"Start", "Cancel", "Results"}: Amended
           ] 
           uint32 Cmd,
 
           [	OUT,
                ValueMap {"0","1","2"}: Amended, 
                Values {"OK", "Error", "Progress"}: Amended
           ]
	   uint32 Status,
	   [OUT]
 	   uint16 CauseMessageId[],
           [OUT]
           string strCause[],
	   [OUT]
 	   uint16 SolutionMessageId[],
           [OUT]
           string strSolution[]

	);

	[Description (
	"CreateTeam adds a new Intel NIC Team to the system.  The 1st input parameter Adapters "
	"is a reference to an array of IANet_PhysicalEthernetAdapter which will be added to this team."
	"TeamingMode is the desired mode of the team to be created and TeamName is the unique name "
	"to be given to the new team."
	):Amended, implemented, Static
	]
	uint32 CreateTeam(
		[IN]	IANet_PhysicalEthernetAdapter REF Adapters[],
		[IN, 
		 ValueMap {"0", "1", "2", "4", "5","6"}:Amended , 
		 Values {"AFT", "ALB", "SLA", "IEEE 802.3ad", "SFT", "VMLB"}:Amended]  uint32 TeamingMode,
		[IN]  string TeamName,
		[IN]  boolean MFOEnable,		
		[OUT] IANet_TeamOfAdapters REF TeamPath
	);

	[Description (
	"RenameTeam changes the name of an existing Intel NIC Team in the system.  The input parameter"
	"TeamName is the unique new name to be given to the existing team."
	):Amended, implemented
	]
	uint32 RenameTeam(
		[IN]  string TeamName
	);

	[Description (
	"ValidateAddAdapters validates the adapters which will be added to this team. The 1st input parameter Adapters "
	"is a reference to an array of IANet_PhysicalEthernetAdapter which will be added to this team."
	"ValResult is the validated result."
	):Amended, implemented
	]
	uint32 ValidateAddAdapters(
		[IN]	IANet_PhysicalEthernetAdapter REF Adapters[],
		[OUT]   uint64 ValResult		
	);
	
	[Description (
	"ValidateNewTeamMembers validates the adapters during the creation of a new team. The 1st input parameter NewAdapters "
	"is a reference to an array of IANet_PhysicalEthernetAdapter which will be added to this team."
	"ValResultNewTeam is the validated result."
	):Amended, implemented, Static
	]
	uint32 ValidateNewTeamMembers(
		[IN]	IANet_PhysicalEthernetAdapter REF NewAdapters[],
		[IN]    uint32 NewTeamMode,	
		[OUT]   uint64 ValResultNewTeam		
	);
		
	[Description (
	"ValidateSetting validates the member adapter setting. The 1st input parameter Adapter is a reference to an " 			"IANet_PhysicalEthernetAdapter for which the setting is validated. Value is the setting value. SettingName is the " 		"adapter setting. ValResult is the validated result."
	):Amended, implemented
	]
	uint32 ValidateSetting(
		[IN]    IANet_PhysicalEthernetAdapter REF Adapter,
		[IN]	string SettingName,
		[IN]    sint64 Value,
		[OUT]   uint64 ValResult		
	);
	
	[Description (
	"ValidateTeamName validates the name of the team. The only input parameter is the name of the team.  A ValResult of zero indicates that the name is valid."
	):Amended, implemented
	]
	uint32 ValidateTeamName(
		[IN]    string TeamName,
		[OUT]   uint64 ValResult		
	);

	[Description (
	"ValidateTeamMode validates the mode of the team. The only input parameter is the mode or type of the team.  A ValResult of zero indicates that the mode is compatible with all team members."
	):Amended, implemented
	]
	uint32 ValidateTeamMode(
		[IN]    uint32 TeamingMode,
		[OUT]   uint64 ValResult		
	);

	
};




// ============================================================================
// Teamed Member Adapter class 
// ============================================================================
		[Aggregation, dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Association,
		 Description("IANet_TeamedMemberAdapter objectifies "
		 "the properties of an individual member of an Intel adapter team. "
		 "Those properties attributed to the team as a whole will be found, not here "
		 "but in IANet_TeamOfAdapters."):Amended,  LOCALE(0x409)
		]
class IANet_TeamedMemberAdapter : CIM_NetworkAdapterRedundancyComponent
{
		
		[write, 
		 Description ("AdapterFunction describes how the adapter is used in "
		 "the team."):Amended,
		 ValueMap {"0", "1", "2", "3"}:Amended, 
		 Values {"Unknown", "Primary Adapter", "Secondary Adapter", "Other"}:Amended ] 	 
    uint16 AdapterFunction;

		[Description ("AdapterStatus describes the adapter's status within the team."):Amended,
		 write, ValueMap {"0", "1", "2", "3"}:Amended, 
		 Values {"Unknown", "Active", "StandBy", "InActive"}:Amended ] 	 
    uint16 AdapterStatus;

     [write, Override("GroupComponent"), 
       Description (
        "The RedundancyGroup representing a set of load balanced "
        "NetworkAdapters."):Amended
      ]
    IANet_TeamOfAdapters REF GroupComponent;
      [write, Override("PartComponent"), 
       Description (
        "The Network Adapter(s) belonging to the RedundancyGroup."):Amended
      ]
    IANet_PhysicalEthernetAdapter REF PartComponent;

};



// ============================================================================
// Network Virtual Adapter class
// ============================================================================
		[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Association, Description (
		 "NetworkVirtualAdapter describes that an instance of Network "
         "Adapter is actually the result of several Adapters "
         "participating in a load balanced RedundancyGroup."):Amended,  LOCALE(0x409)
		]
class IANet_NetworkVirtualAdapter : CIM_NetworkVirtualAdapter
{
		[Override ("SystemElement"), 
		 Description ("The 'virtual' NetworkAdapter."):Amended
		]
    IANet_LogicalEthernetAdapter REF SystemElement;
		[Override ("SameElement"), 
		 Description (
    	"The ExtraCapacity RedundancyGroup that describes the load "
    	"balancing. The result of the load balancing is the 'virtual' "
    	"Adapter.") :Amended
		]
   	IANet_TeamOfAdapters REF SameElement;
};


// ============================================================================
// Intel IANet_TeamSetting Abstract Base Class
// ============================================================================
		[Abstract,  provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), 
		 Description("IANet_TeamSetting objectifies Team instance related "
		 "driver and network device settings. IANet_TeamSetting is an "
		 "Abstract superclass for a set of concrete classes of different "
		 "types.  This set of classes allows open ended usage of a variable "
		 "number of settings." 
		):Amended,  LOCALE(0x409)
		]
class IANet_TeamSetting : IANet_Setting
{

};


// ============================================================================
// TeamSetting Int Class
// ============================================================================

		[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), 
		 Description("IANet_TeamSettingInt objectifies Team related "
		 "driver and network device settings. IANet_TeamSettingInt " 
		 "specifically handles Integer settings. The following "
		 "constraints are placed on the CurrentValue and default value:\n"
		 "	min <= CurrentValue <= max\n"
		 "	( CurrentValue - base ) is a multiple of step\n"):Amended,  LOCALE(0x409)]
class IANet_TeamSettingInt : IANet_TeamSetting
{
		[Description(
		 "Min is the minimum value that the integer can take."):Amended]
	sint64 min;

		[Description(
		 "Max is the maximum value that the integer can take."):Amended]
	sint64 max;

		[Description(
		 "Step is the granularity of the integer value."):Amended]
	sint64 step;

		[Description(
		 "Base is the root from which the integer value may take values. i.e. "
		 " CurrentValue - base is a multiple of step."):Amended]
	uint64 base;

		[Description(
		 "DefaultValue is the initial value of the parameter."):Amended]	
	sint64 DefaultValue;

		[Write, Description(
		 "CurrentValue is the actual value of the parameter - this is the only attribute that "
		 "the user can change."):Amended]	
	sint64 CurrentValue;

		[Description(
		 "Scale is unit of measurement to set or estimate series of marks "
		 "or points at known intervals to measure value of the parameter."):Amended]	
	sint64 Scale;
	
};

// ============================================================================
//  Team Setting Enum Class
// ============================================================================
		[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), 
		 Description("IANet_TeamSettingEnum objectifies Team related "
		 "driver and network device settings. IANet_TeamSettingEnum " 
		 "specifically handles Enumeration settings"):Amended,  LOCALE(0x409)
		]
class IANet_TeamSettingEnum : IANet_TeamSetting
{
		[Description(
		 "PossibleValues is an array of the possible values allowed for the enum."):Amended
		]	
	sint64 PossibleValues[];
		
		[Description(
		 "DescriptionMap describes what each value means."):Amended
		]	
	string DescriptionMap[];
		
		[write, Description(
		 "CurrentValue is the current setting for this parameter."):Amended
		]	 
	sint64 CurrentValue;
		
		[Description(
		 "DefaultValue is the initial setting for this value."):Amended
		]
	sint64 DefaultValue;
};

// ============================================================================
//  Team Setting Slider Class
// ============================================================================
    [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), 
    Description("IANet_TeamSettingSlider objectifies Team related "
    "driver and network device settings. IANet_TeamSettingSlider " 
    "specifically handles Slider settings"):Amended,  LOCALE(0x409)
    ]
class IANet_TeamSettingSlider : IANet_TeamSetting
{
		[Description(
		 "PossibleValues is an array of all the possible values.  The values "
		 "should be arranged with the first value on the left of the slider and "
		 "the last value on the right. "):Amended
		]
	sint64 PossibleValues[];
		[write, Description(
		 "CurrentValue is the current setting for this parameter."):Amended
		] 
	sint64 CurrentValue;

		[Description(
		 "DefaultValue is the initial setting for this parameter."):Amended
		]
	sint64 DefaultValue;
		
		[Description(
		 "FirstLabel is the label that should be displayed on the left of the slider."):Amended
		]
	string FirstLabel;
		[Description(
		 "LastLabel is the label that should be displayed on the right of the slider."):Amended
		]
	string LastLabel;
};

// ============================================================================
//  Team Setting Multi Selection Class
// ============================================================================
    [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), 
    Description("IANet_TeamSettingMultiSelection objectifies Team related "
    "driver and network device settings. IANet_TeamSettingMultiSelection " 
    "specifically handles Multi Selection settings."):Amended,  LOCALE(0x409)
    ]

class IANet_TeamSettingMultiSelection : IANet_TeamSetting
{
		[Description(
		 "PossibleValues is an array of all the possible selections."):Amended
		]
	sint64 PossibleValues[];
		[Description(
		 "DescriptionMap is an array of descriptions of the possible selections."):Amended
		]
	string DescriptionMap[];
		[write, Description(
		 "Current value is a bit-wise OR of the currently chosen options from the "
		 "possible values."):Amended
		] 
	sint64 CurrentValue;

		[write, Description(
		 "Default value is a bit-wise OR of the default options from the "
		 "possible values."):Amended	
		] 
	sint64 DefaultValue;
	
};

// ============================================================================
//  Team Setting String Class
// ============================================================================
		[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), 
		 Description("IANet_TeamSettingString objectifies Team related "
		 "driver and network device settings. IANet_TeamSettingString " 
		 "specifically handles String settings."):Amended,  LOCALE(0x409)
		]
class IANet_TeamSettingString : IANet_TeamSetting
{
		[Description("MaxLength is the maximum length of the string."):Amended]
	uint32  MaxLength;

		[write, Description("CurrentString is the current value for the parameter."):Amended] 
	string  CurrentValue;

		[Description("DefaultString is the initial value for the parameter."):Amended]
	string  DefaultValue;
};

// ============================================================================
//  Team Setting Multi-String Class
// ============================================================================
		[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), 
		 Description("IANet_TeamSettingMultiString objectifies Team related "
		 "driver and network device settings. IANet_TeamSettingMultiString " 
		 "specifically handles Multi-String settings."):Amended,  LOCALE(0x409)
		]
class IANet_TeamSettingMultiString : IANet_TeamSetting
{
		[Description("MaxLength is the maximum length of the string."):Amended]
	uint32  MaxLength;

		[write, Description("CurrentString is the current values for the parameter."):Amended] 
	string  CurrentValues[];

		[Description("DefaultString is the initial value for the parameter."):Amended]
	string  DefaultValue;
};

// ============================================================================
// IANet_TeamToSettingAssoc class
// ============================================================================
[   Association, Description("This class associates Intel NIC Teams with their respective settings.")
                :Amended,  LOCALE(0x409),
    Dynamic,
    Provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll")
]
class IANet_TeamToTeamSettingAssoc  : CIM_ElementSetting
{
   [  Override("Element"),
      Description ("The Team to which the Setting object belongs."):Amended
   ]
   IANet_LogicalEthernetAdapter REF Element = NULL;
   [  Override("Setting"),
      Description ("The Setting belonging to the Team."):Amended
   ]
   IANet_TeamSetting REF Setting = NULL;
};









