/*++ Copyright (c) 1995-1997 Microsoft Corporation Module Name: clnetcfg.h Abstract: Network Configuration Engine definitions Author: Mike Massa (mikemas) 28-Feb-1998 Revision History: --*/ #ifndef _CLNETCFG_INCLUDED_ #define _CLNETCFG_INCLUDED_ #ifdef __cplusplus extern "C" { #endif // // Structures // // // Network Configuration Entry Structure // Identifies a network and a local interface. // typedef struct _CLNET_CONFIG_ENTRY { LIST_ENTRY Linkage; NM_NETWORK_INFO NetworkInfo; BOOLEAN IsInterfaceInfoValid; BOOLEAN UpdateNetworkName; NM_INTERFACE_INFO2 InterfaceInfo; // Fields used by setup BOOL New; BOOL IsPrimed; LPWSTR PreviousNetworkName; LIST_ENTRY PriorityLinkage; } CLNET_CONFIG_ENTRY, *PCLNET_CONFIG_ENTRY; // // Configuration Lists Structure // Contains the set of network configuration lists emitted by the // configuration engine. // typedef struct _CLNET_CONFIG_LISTS { LIST_ENTRY InputConfigList; LIST_ENTRY DeletedInterfaceList; LIST_ENTRY UpdatedInterfaceList; LIST_ENTRY CreatedInterfaceList; LIST_ENTRY CreatedNetworkList; } CLNET_CONFIG_LISTS, *PCLNET_CONFIG_LISTS; // // Definitions for functions supplied by the consumer of the network // configuration engine. // typedef VOID (*LPFN_CLNETPRINT)( IN ULONG LogLevel, IN PCHAR FormatString, ... ); typedef VOID (*LPFN_CLNETLOGEVENT)( IN DWORD LogLevel, IN DWORD MessageId ); typedef VOID (*LPFN_CLNETLOGEVENT1)( IN DWORD LogLevel, IN DWORD MessageId, IN LPCWSTR Arg1 ); typedef VOID (*LPFN_CLNETLOGEVENT2)( IN DWORD LogLevel, IN DWORD MessageId, IN LPCWSTR Arg1, IN LPCWSTR Arg2 ); typedef VOID (*LPFN_CLNETLOGEVENT3)( IN DWORD LogLevel, IN DWORD MessageId, IN LPCWSTR Arg1, IN LPCWSTR Arg2, IN LPCWSTR Arg3 ); // // Exported Routines // VOID ClNetInitialize( IN LPFN_CLNETPRINT Print, IN LPFN_CLNETLOGEVENT LogEvent, IN LPFN_CLNETLOGEVENT1 LogEvent1, IN LPFN_CLNETLOGEVENT2 LogEvent2, IN LPFN_CLNETLOGEVENT3 LogEvent3 ); LPWSTR ClNetCopyString( IN LPWSTR SourceString, IN BOOL RaiseExceptionOnError ); VOID ClNetInitializeConfigLists( PCLNET_CONFIG_LISTS Lists ); DWORD ClNetConvertEnumsToConfigList( IN PNM_NETWORK_ENUM * NetworkEnum, IN PNM_INTERFACE_ENUM2 * InterfaceEnum, IN LPWSTR LocalNodeId, IN OUT PLIST_ENTRY ConfigList, IN BOOLEAN DeleteEnums ); VOID ClNetFreeNetworkEnum( IN PNM_NETWORK_ENUM NetworkEnum ); VOID ClNetFreeNetworkInfo( IN PNM_NETWORK_INFO NetworkInfo ); VOID ClNetFreeInterfaceEnum1( IN PNM_INTERFACE_ENUM InterfaceEnum1 ); VOID ClNetFreeInterfaceEnum( IN PNM_INTERFACE_ENUM2 InterfaceEnum ); VOID ClNetFreeInterfaceInfo( IN PNM_INTERFACE_INFO2 InterfaceInfo ); VOID ClNetFreeNodeEnum1( IN PNM_NODE_ENUM NodeEnum ); VOID ClNetFreeNodeEnum( IN PNM_NODE_ENUM2 NodeEnum ); VOID ClNetFreeNodeInfo( IN PNM_NODE_INFO2 NodeInfo ); VOID ClNetFreeConfigEntry( PCLNET_CONFIG_ENTRY ConfigEntry ); VOID ClNetFreeConfigList( IN PLIST_ENTRY ConfigList ); VOID ClNetFreeConfigLists( PCLNET_CONFIG_LISTS Lists ); LPWSTR ClNetMakeInterfaceName( LPWSTR Prefix, OPTIONAL LPWSTR NodeName, LPWSTR AdapterName ); DWORD ClNetConfigureNetworks( IN LPWSTR LocalNodeId, IN LPWSTR LocalNodeName, IN LPWSTR DefaultClusnetEndpoint, IN CLUSTER_NETWORK_ROLE DefaultNetworkRole, IN BOOL NetNameHasPrecedence, IN OUT PCLNET_CONFIG_LISTS ConfigLists, IN OUT LPDWORD MatchedNetworkCount, IN OUT LPDWORD NewNetworkCount ); /*++ Notes: Output interface lists must be processed in the following order to guarantee correctness: 1 - RenamedInterfaceList 2 - DeletedInterfaceList 3 - UpdatedInterfaceList 4 - CreatedInterfaceList 5 - CreatedNetworkList --*/ #ifdef __cplusplus } #endif #endif // ifndef _CLNETCFG_INCLUDED_