222 lines
7.2 KiB
C
222 lines
7.2 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
|
|
|
|
|
|
//
|
|
// Define the following field to 1 for Cluster Beta testing, zero otherwise.
|
|
//
|
|
#define CLUSTER_BETA 1
|
|
|
|
//
|
|
// 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
|
|
|
|
|
|
//
|
|
// 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,
|
|
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.
|
|
//
|
|
// We start by defining our own facility code to distinguish our status
|
|
// values.
|
|
//
|
|
// This claim is also in ntstatus.h. Leaving it here to avoid any
|
|
// possible build breaks or issues.
|
|
// EBK - 5/8/2000 Whistler bug # 83157
|
|
#ifndef FACILITY_CLUSTER_ERROR_CODE
|
|
#define FACILITY_CLUSTER_ERROR_CODE 0x13
|
|
#endif
|
|
|
|
//
|
|
// Warning codes
|
|
//
|
|
#define STATUS_CLUSTER_NODE_ALREADY_ONLINE 0x80130001L
|
|
#define STATUS_CLUSTER_NODE_ALREADY_OFFLINE 0x80130002L
|
|
#define STATUS_CLUSTER_NETWORK_ALREADY_ONLINE 0x80130003L
|
|
#define STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE 0x80130004L
|
|
#define STATUS_CLUSTER_NODE_ALREADY_MEMBER 0x80130005L
|
|
|
|
//
|
|
// Error codes
|
|
//
|
|
#define STATUS_CLUSTER_INVALID_NODE 0xC0130001L
|
|
#define STATUS_CLUSTER_NODE_EXISTS 0xC0130002L
|
|
#define STATUS_CLUSTER_JOIN_IN_PROGRESS 0xC0130003L
|
|
#define STATUS_CLUSTER_NODE_NOT_FOUND 0xC0130004L
|
|
#define STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND 0xC0130005L
|
|
#define STATUS_CLUSTER_NETWORK_EXISTS 0xC0130006L
|
|
#define STATUS_CLUSTER_NETWORK_NOT_FOUND 0xC0130007L
|
|
#define STATUS_CLUSTER_INTERFACE_EXISTS 0xC0130008L
|
|
#define STATUS_CLUSTER_INTERFACE_NOT_FOUND 0xC0130009L
|
|
#define STATUS_CLUSTER_INVALID_REQUEST 0xC013000AL
|
|
#define STATUS_CLUSTER_INVALID_NETWORK_PROVIDER 0xC013000BL
|
|
#define STATUS_CLUSTER_NODE_OFFLINE 0xC013000CL
|
|
#define STATUS_CLUSTER_NODE_UNREACHABLE 0xC013000DL
|
|
#define STATUS_CLUSTER_NODE_NOT_MEMBER 0xC013000EL
|
|
#define STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS 0xC013000FL
|
|
#define STATUS_CLUSTER_INVALID_NETWORK 0xC0130010L
|
|
#define STATUS_CLUSTER_NO_NET_ADAPTERS 0xC0130011L
|
|
#define STATUS_CLUSTER_NODE_NOT_ONLINE 0xC0130012L
|
|
#define STATUS_CLUSTER_NODE_NOT_OFFLINE 0xC0130013L
|
|
#define STATUS_CLUSTER_NODE_NOT_PAUSED 0xC0130014L
|
|
|
|
//
|
|
// ClusNet Win32 Error Codes
|
|
//
|
|
|
|
//
|
|
// Warning codes
|
|
//
|
|
// These constants are declared with real values in clusmsg.h. There declaration
|
|
// here maybe completely obsolete. I just left them here to avoid introducing any
|
|
// unforseen breaks.
|
|
// EBK - 5/8/2000 Whistler bug # 83158
|
|
//
|
|
#define ERROR_CLUSTER_NODE_ALREADY_ONLINE STATUS_CLUSTER_NODE_ALREADY_ONLINE
|
|
#define ERROR_CLUSTER_NODE_ALREADY_OFFLINE STATUS_CLUSTER_NODE_ALREADY_OFFLINE
|
|
#define ERROR_CLUSTER_NETWORK_ALREADY_ONLINE STATUS_CLUSTER_NETWORK_ALREADY_ONLINE
|
|
#define ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE
|
|
#define ERROR_CLUSTER_ALREADY_MEMBER STATUS_CLUSTER_NODE_ALREADY_MEMBER
|
|
|
|
//
|
|
// Error codes
|
|
//
|
|
#define ERROR_CLUSTER_INVALID_NODE STATUS_CLUSTER_INVALID_NODE
|
|
#define ERROR_CLUSTER_NODE_EXISTS STATUS_CLUSTER_NODE_EXISTS
|
|
#define ERROR_CLUSTER_JOIN_IN_PROGRESS STATUS_CLUSTER_JOIN_IN_PROGRESS
|
|
#define ERROR_CLUSTER_NODE_NOT_FOUND STATUS_CLUSTER_NODE_NOT_FOUND
|
|
#define ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND
|
|
#define ERROR_CLUSTER_NETWORK_EXISTS STATUS_CLUSTER_NETWORK_EXISTS
|
|
#define ERROR_CLUSTER_NETWORK_NOT_FOUND STATUS_CLUSTER_NETWORK_NOT_FOUND
|
|
#define ERROR_CLUSTER_INTERFACE_EXISTS STATUS_CLUSTER_INTERFACE_EXISTS
|
|
#define ERROR_CLUSTER_INTERFACE_NOT_FOUND STATUS_CLUSTER_INTERFACE_NOT_FOUND
|
|
#define ERROR_CLUSTER_INVALID_REQUEST STATUS_CLUSTER_INVALID_REQUEST
|
|
#define ERROR_CLUSTER_INVALID_NETWORK_PROVIDER STATUS_CLUSTER_INVALID_NETWORK_PROVIDER
|
|
#define ERROR_CLUSTER_NODE_OFFLINE STATUS_CLUSTER_NODE_OFFLINE
|
|
#define ERROR_CLUSTER_NODE_UNREACHABLE STATUS_CLUSTER_NODE_UNREACHABLE
|
|
#define ERROR_CLUSTER_NODE_NOT_MEMBER STATUS_CLUSTER_NODE_NOT_MEMBER
|
|
#define ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS
|
|
#define ERROR_CLUSTER_INVALID_NETWORK STATUS_CLUSTER_INVALID_NETWORK
|
|
#define ERROR_CLUSTER_NO_NET_ADAPTERS STATUS_CLUSTER_NO_NET_ADAPTERS
|
|
#define ERROR_CLUSTER_NODE_NOT_ONLINE STATUS_CLUSTER_NODE_NOT_ONLINE
|
|
#define ERROR_CLUSTER_NODE_NOT_OFFLINE STATUS_CLUSTER_NODE_NOT_OFFLINE
|
|
#define ERROR_CLUSTER_NODE_NOT_PAUSED STATUS_CLUSTER_NODE_NOT_PAUSED
|
|
|
|
|
|
#define ERROR_CLUSTER_NETWORK_NOT_INTERNAL 0xC0130050L
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // __cplusplus
|
|
|
|
|
|
#endif //_CLUSDEF_H
|
|
|