 /************************************************************************
*                                                                       *
*               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("VLANBoundToHyperV represents the Hyper-V enabled/disabled on a VLAN in the current team. "):Amended] 	
 	boolean VLANBoundToHyperV;

	[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 (
	"CreateTeamEx creates a new Intel NIC Team on the system.  The first input parameter Adapters[],"
	"is a reference to an array of IANet_PhysicalEthernetAdapter which will be added to this team."
	"The second parameter, TeamingMode is the desired mode of the team to be created and the third parameter, TeamName is the unique name "
	"to be given to the new team.  The fourth parameter, PerformanceProfile is the desired performance profile to be set for the team."
	"The remaining parameters are reserved for later use."
	):Amended, implemented, Static
	]
	uint32 CreateTeamEx(
		[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]  uint32 PerformanceProfile,
		[IN]  uint32 Reserved1,
		[IN]  uint32 Reserved2,
		[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]   WarningMessageObj WarningMessages[]		
	);
	
	[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]   WarningMessageObj WarningMessages[]	
	);
		
	[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]   WarningMessageObj WarningMessages[]		
	);
	
	[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, Static
	]
	uint32 ValidateTeamName(
		[IN]    string TeamName,
		[OUT]   WarningMessageObj WarningMessages[]		
	);

	[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]   WarningMessageObj WarningMessages[]		
	);

	
};




// ============================================================================
// 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;
};









