 // NlbsNicProv.MOF
// Copyright (c) 1999 Microsoft Corporation
// Generated by Microsoft WBEM Code Generation Engine
//
// TO DO: If this class is intended to be created in a namespace 
//        other than the default (root\default), you should add 
//        the #pragma namespace command here.  If these classes 
//        are going into your own namespace, consider creating 
//        the namespace here as well.  See CIMWIN32.MOF for an 
//        example of how to create a namespace.  Also, consider
//        combining this mof with the mof the defines the class
//        that this provider provides.
//
//===================================================================
// History:
// --------
// 
//
// Revised by : mhakim
// Date       : 02-12-01
// Reason     : Added password support.

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

//*************************************************************
//***   Registers Framework Provider                        ***
//*************************************************************
instance of __Win32Provider as $P
{
    Name = "NlbsNicProv";
    ClsId = "{4c97e0a8-c5ea-40fd-960d-7d6c987be0a6}";
};

instance of __InstanceProviderRegistration
{
    Provider = $P;
    SupportsGet = TRUE;
    SupportsPut = TRUE;
    SupportsDelete = FALSE;
    SupportsEnumeration = TRUE;
    QuerySupportLevels = NULL;
};

instance of __MethodProviderRegistration
{
    Provider = $P;
};

[Dynamic, Provider ("NlbsNicProv")]
class NlbsNic
{

	[
	key,
	read,
	Description(" The complete full name for the adapter.")
	]
	String	FullName;

	[
	Description(" The guid for the adapter")
	]
	String	AdapterGuid;

	[
	read, write,
	Description(" The friendly name for the adapter as seen in network properties.")
	]
	String	FriendlyName;

	[
	read, 
	Description(" The version of the nlbsnic provider.")
	]
	String	Version;

	[	
	read,
	Description(" The win32_networkadapterconfiguration for this class")
	]
	MicrosoftNLB_Cluster REF Dependent;


       [
	Implemented,  
	Description("Checks to see if nlbs is bound or not to the adapter. "	
		    "It returns 0 - unbound, 1 - bound, else errorcode .")
	]
       uint32 IsBound();

       [
	Implemented,  
	Description("Binds nlbs  to the adapter. "	
	            "It returns 0 - SUCCESS, 30 - no nlbs to bind, else errorcode.")
	]
       uint32 Bind();

       [
	Implemented,  
	Description("Unbinds nlbs from the adapter. "	
	            "It returns 0 - SUCCESS, 30 - no nlbs to unbind, else errorcode.")
	]
        uint32 Unbind();

       [
	Implemented,  
	Description(" Binds nlbs  to the adapter and also configures nlbs "
	            "It returns 0 - SUCCESS, 30 - no nlbs to bind, else errorcode.")
	]
       uint32 BindAndConfigure(  [IN] String  ClusterIPAddress,
	       	                 [IN] String  ClusterNetworkMask,
				 [IN] String  ClusterName,
			         [IN] Boolean MulticastSupportEnabled,
			         [IN] Boolean IGMPSupport,
			         [IN] Boolean RemoteControlEnabled,
	       	                 [IN] String  Password,
				 [IN] uint32  HostPriority,
                		 [IN] String  DedicatedIPAddress,
                                 [IN] String  DedicatedNetworkMask,
			         [IN] Boolean ClusterModeOnStart,
				 [IN] String  PortRules[] );

       [
	Implemented,  
	Description(" Applies Cluster Property modifications, Adds (might be new) Cluster IP Address to Tcp/Ip "
	            "It returns 0 - SUCCESS, else errorcode.")
	]
       uint32 ModifyClusterProperties( [IN] String  ClusterIPAddress,
  	       	                       [IN] String  ClusterNetworkMask,
				       [IN] String  ClusterName,
			               [IN] Boolean MulticastSupportEnabled,
			               [IN] Boolean IGMPSupport,
			               [IN] Boolean RemoteControlEnabled,
	       	                       [IN] String  Password);

    [
	Implemented,  
	Description("Gets extended cluster configuration information.")
	]
       uint32 GetClusterConfiguration(
                [IN]  String  AdapterGuid,
                [OUT] uint32  Generation,
                [OUT] String  NetworkAddresses[], // "10.1.1.1/255.0.0.0"
                [OUT] Boolean NLBBound,
                [OUT] String  ClusterNetworkAddress, // "10.1.1.1/255.0.0.0"
                [OUT] String  ClusterName,
                [OUT] String  TrafficMode, // UNICAST MULTICAST IGMPMULTICAST
                [OUT] String  PortRules[],
                [OUT] uint32  HostPriority,
                [OUT] String  DedicatedNetworkAddress, // "10.1.1.1/255.0.0.0"
                [OUT] Boolean ClusterModeOnStart,
                [OUT] Boolean RemoteControlEnabled
                );

    [
	Implemented,  
	Description("Asynchronously updates cluster configuration.")
	]
       uint32 UpdateClusterConfiguration(
                [IN] String  ClientDescription,
                [IN] String  AdapterGuid,
                [IN] uint32  Generation,
                [IN] Boolean PartialUpdate,
                [IN] String  NetworkAddresses[], // "10.1.1.1/255.255.255.255"
                [IN] Boolean NLBBound,
                [IN] String  ClusterNetworkAddress, // "10.1.1.1/255.0.0.0"
                [IN] String  ClusterName,
                [IN] String  TrafficMode, // UNICAST MULTICAST IGMPMULTICAST
                [IN] String  PortRules[],
                [IN] uint32  HostPriority,
                [IN] String  DedicatedNetworkAddress, // "10.1.1.1/255.0.0.0"
                [IN] Boolean ClusterModeOnStart,
                [IN] Boolean RemoteControlEnabled,
                [IN] String  Password,
                [OUT] uint32 NewGeneration,
                [OUT] String Log
                );

    [
	Implemented,  
	Description("Queries status of a pending asynchronous cluster"
                " configuration update.")
	]
       uint32 QueryConfigurationUpdateStatus(
                [IN] String  AdapterGuid,
                [IN] uint32  Generation,
                [OUT] String Log
                );

};
