148 lines
3.4 KiB
C
148 lines
3.4 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1997 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
clusdef.h
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
Common definitions for user-mode and kernel-mode components of the
|
|||
|
cluster project.
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Mike Massa (mikemas) 15-Feb-1997
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
--*/
|
|||
|
#ifndef _CLUSDEF_H
|
|||
|
#define _CLUSDEF_H
|
|||
|
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif // __cplusplus
|
|||
|
|
|||
|
//
|
|||
|
// Cluster node ID definition
|
|||
|
//
|
|||
|
typedef ULONG CL_NODE_ID;
|
|||
|
|
|||
|
#define ClusterMinNodeId 1
|
|||
|
#define ClusterMinNodeIdString L"1"
|
|||
|
#define ClusterDefaultMaxNodes 16
|
|||
|
#define ClusterAnyNodeId 0
|
|||
|
#define ClusterInvalidNodeId 0xFFFFFFFF
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// Default clusnet endpoint value assigned by IANA
|
|||
|
//
|
|||
|
#define CLUSNET_DEFAULT_ENDPOINT_STRING L"3343" // our UDP port number
|
|||
|
|
|||
|
//
|
|||
|
// Default role for a cluster network.
|
|||
|
//
|
|||
|
#define CL_DEFAULT_NETWORK_ROLE ClusterNetworkRoleInternalAndClient
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// Cluster network ID definition
|
|||
|
//
|
|||
|
typedef ULONG CL_NETWORK_ID, *PCL_NETWORK_ID;
|
|||
|
|
|||
|
#define ClusterAnyNetworkId 0
|
|||
|
#define ClusterInvalidNetworkId 0xFFFFFFFF
|
|||
|
|
|||
|
//
|
|||
|
// ClusNet node communication state definition
|
|||
|
//
|
|||
|
typedef enum {
|
|||
|
ClusnetNodeCommStateOffline = 0,
|
|||
|
ClusnetNodeCommStateOfflinePending = 1,
|
|||
|
ClusnetNodeCommStateUnreachable = 2,
|
|||
|
ClusnetNodeCommStateOnlinePending = 3,
|
|||
|
ClusnetNodeCommStateOnline = 4
|
|||
|
} CLUSNET_NODE_COMM_STATE, *PCLUSNET_NODE_COMM_STATE;
|
|||
|
|
|||
|
//
|
|||
|
// ClusNet network state definition
|
|||
|
//
|
|||
|
typedef enum {
|
|||
|
ClusnetNetworkStateOffline = 0,
|
|||
|
ClusnetNetworkStateOfflinePending = 1,
|
|||
|
ClusnetNetworkStatePartitioned = 2,
|
|||
|
ClusnetNetworkStateOnlinePending = 3,
|
|||
|
ClusnetNetworkStateOnline = 4
|
|||
|
} CLUSNET_NETWORK_STATE, *PCLUSNET_NETWORK_STATE;
|
|||
|
|
|||
|
//
|
|||
|
// ClusNet interface state definition
|
|||
|
//
|
|||
|
typedef enum {
|
|||
|
ClusnetInterfaceStateOffline = 0,
|
|||
|
ClusnetInterfaceStateOfflinePending = 1,
|
|||
|
ClusnetInterfaceStateUnreachable = 2,
|
|||
|
ClusnetInterfaceStateOnlinePending = 3,
|
|||
|
ClusnetInterfaceStateOnline = 4
|
|||
|
} CLUSNET_INTERFACE_STATE, *PCLUSNET_INTERFACE_STATE;
|
|||
|
|
|||
|
//
|
|||
|
// ClusNet node membership state. This tracks the internal
|
|||
|
// membership state maintained by the membership engine in the cluster
|
|||
|
// service. This enum MUST start at zero since it is used as an index
|
|||
|
// into a state table.
|
|||
|
//
|
|||
|
|
|||
|
typedef enum {
|
|||
|
ClusnetNodeStateAlive = 0,
|
|||
|
ClusnetNodeStateJoining,
|
|||
|
ClusnetNodeStateDead,
|
|||
|
ClusnetNodeStateNotConfigured,
|
|||
|
ClusnetNodeStateLastEntry
|
|||
|
} CLUSNET_NODE_STATE, *PCLUSNET_NODE_STATE;
|
|||
|
|
|||
|
//
|
|||
|
// ClusNet Event definitions
|
|||
|
//
|
|||
|
typedef enum _CLUSNET_EVENT_TYPE {
|
|||
|
ClusnetEventNone = 0x00000000,
|
|||
|
ClusnetEventNodeUp = 0x00000001,
|
|||
|
ClusnetEventNodeDown = 0x00000002,
|
|||
|
ClusnetEventPoisonPacketReceived = 0x00000004,
|
|||
|
ClusnetEventHalt = 0x00000008,
|
|||
|
|
|||
|
ClusnetEventNetInterfaceUp = 0x00000010,
|
|||
|
ClusnetEventNetInterfaceUnreachable = 0x00000020,
|
|||
|
ClusnetEventNetInterfaceFailed = 0x00000040,
|
|||
|
|
|||
|
ClusnetEventAddAddress = 0x00000100,
|
|||
|
ClusnetEventDelAddress = 0x00000200,
|
|||
|
|
|||
|
ClusnetEventMulticastSet = 0x00001000,
|
|||
|
|
|||
|
ClusnetEventAll = 0xFFFFFFFF
|
|||
|
} CLUSNET_EVENT_TYPE, *PCLUSNET_EVENT_TYPE;
|
|||
|
|
|||
|
typedef struct {
|
|||
|
ULONG Epoch;
|
|||
|
CLUSNET_EVENT_TYPE EventType;
|
|||
|
CL_NODE_ID NodeId;
|
|||
|
CL_NETWORK_ID NetworkId;
|
|||
|
} CLUSNET_EVENT, *PCLUSNET_EVENT;
|
|||
|
|
|||
|
//
|
|||
|
// ClusNet NTSTATUS codes are now located in ntstatus.h
|
|||
|
//
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif // __cplusplus
|
|||
|
|
|||
|
|
|||
|
#endif //_CLUSDEF_H
|
|||
|
|
|||
|
|