|
|
/*++
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;
//
// Add types for Clussvc to clusnet Heartbeating.
//
typedef enum _ClussvcHangAction { ClussvcHangActionDisable = 0, ClussvcHangActionLog = 1, ClussvcHangActionTerminateService = 2, ClussvcHangActionBugCheckMachine = 3, ClussvcHangActionMax = 4 } ClussvcHangAction, *PClussvcHangAction;
//
// ClusNet NTSTATUS codes are now located in ntstatus.h
//
#ifdef __cplusplus
} #endif // __cplusplus
#endif //_CLUSDEF_H
|