mirror of
https://git.proxmox.com/git/mirror_corosync
synced 2025-06-12 12:45:47 +00:00

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@957 fd59a12c-fef9-0310-b244-a6a79926bd2f
419 lines
10 KiB
C
419 lines
10 KiB
C
/*
|
|
* Copyright (c) 2002-2003 MontaVista Software, Inc.
|
|
*
|
|
* All rights reserved.
|
|
*
|
|
* Author: Steven Dake (sdake@mvista.com)
|
|
*
|
|
* This software licensed under BSD license, the text of which follows:
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* - Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the following disclaimer.
|
|
* - Redistributions in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
* and/or other materials provided with the distribution.
|
|
* - Neither the name of the MontaVista Software, Inc. nor the names of its
|
|
* contributors may be used to endorse or promote products derived from this
|
|
* software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
* THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#ifndef AIS_AMF_H_DEFINED
|
|
#define AIS_AMF_H_DEFINED
|
|
|
|
#include "saAis.h"
|
|
|
|
typedef SaUint64T SaAmfHandleT;
|
|
|
|
#define SA_AMF_PM_ZERO_EXIT 0x1
|
|
#define SA_AMF_PM_NON_ZERO_EXIT 0x2
|
|
#define SA_AMF_PM_ABNORMAL_END 0x4
|
|
|
|
typedef SaUint32T SaAmfPmErrorsT;
|
|
|
|
typedef enum {
|
|
SA_AMF_PM_PROC = 1,
|
|
SA_AMF_PM_PROC_AND_DESCENDENTS = 2,
|
|
SA_AMF_PM_ALL_PROCESSES =3
|
|
} SaAmfPmStopQualifierT;
|
|
|
|
typedef enum {
|
|
SA_AMF_HEALTHCHECK_AMF_INVOKED = 1,
|
|
SA_AMF_HELATHCHECK_COMPONENT_INVOKED =2
|
|
} SaAmfHealthcheckInvocationT;
|
|
|
|
#define SA_AMF_HEALTHCHECK_KEY_MAX 32
|
|
typedef struct {
|
|
SaUint8T key[SA_AMF_HEALTHCHECK_KEY_MAX];
|
|
SaUint16T keyLen;
|
|
} SaAmfHealthcheckKeyT;
|
|
|
|
typedef enum {
|
|
SA_AMF_HA_ACTIVE = 1,
|
|
SA_AMF_HA_STANDBY = 2,
|
|
SA_AMF_HA_QUIESCED = 3,
|
|
SA_AMF_HA_QUIESCING = 4
|
|
} SaAmfHAStateT;
|
|
|
|
typedef enum {
|
|
SA_AMF_READINESS_OUT_OF_SERVICE = 1,
|
|
SA_AMF_READINESS_IN_SERVICE = 2,
|
|
SA_AMF_READINESS_STOPPING = 3
|
|
} SaAmfReadinessStateT;
|
|
|
|
typedef enum {
|
|
SA_AMF_PRESENCE_UNINSTANTIATED = 1,
|
|
SA_AMF_PRESENCE_INSTANTIATING = 2,
|
|
SA_AMF_PRESENCE_INSTANTIATED = 3,
|
|
SA_AMF_PRESENCE_TERMINATING = 4,
|
|
SA_AMF_PRESENCE_RESTARTING = 5,
|
|
SA_AMF_PRESENCE_INSTANTIATION_FAILED = 6,
|
|
SA_AMF_PRESENCE_TERMINATION_FAILED = 7
|
|
} SaAmfPresenceStateT;
|
|
|
|
typedef enum {
|
|
SA_AMF_OPERATIONAL_ENABLED = 1,
|
|
SA_AMF_OPERATIONAL_DISABLED = 2
|
|
} SaAmfOperationalStateT;
|
|
|
|
typedef enum {
|
|
SA_AMF_ADMIN_UNLOCKED = 1,
|
|
SA_AMF_ADMIN_LOCKED = 2,
|
|
SA_AMF_ADMIN_LOCKED_INSTANTIATION = 3,
|
|
SA_AMF_ADMIN_SHUTTING_DOWN = 4
|
|
} SaAmfAdminStateT;
|
|
|
|
typedef enum {
|
|
SA_AMF_ASSIGNMENT_UNASSIGNED = 1,
|
|
SA_AMF_ASSIGNMENT_FULLY_ASSIGNED = 2,
|
|
SA_AMF_ASSIGNMENT_PARTIALLY_ASSIGNED = 3
|
|
} SaAmfAssignmentStateT;
|
|
|
|
typedef enum {
|
|
SA_AMF_PROXY_STATUS_UNPROXIED = 1,
|
|
SA_AMF_PROXY_STATUS_PROXIED = 2
|
|
} SaAmfProxyStatusT;
|
|
|
|
typedef enum {
|
|
SA_AMF_READINESS_STATE = 1,
|
|
SA_AMF_HA_STATE = 2,
|
|
SA_AMF_PRESENCE_STATE = 3,
|
|
SA_AMF_OP_STATE = 4,
|
|
SA_AMF_ADMIN_STATE = 5,
|
|
SA_AMF_ASSIGNMENT_STATE = 6,
|
|
SA_AMF_PROXY_STATUS = 7
|
|
} SaAmfStateT;
|
|
|
|
#define SA_AMF_CSI_ADD_ONE 0x1
|
|
#define SA_AMF_CSI_TARGET_ONE 0x2
|
|
#define SA_AMF_CSI_TARGET_ALL 0x4
|
|
|
|
typedef SaUint32T SaAmfCSIFlagsT;
|
|
|
|
|
|
typedef enum {
|
|
SA_AMF_CSI_NEW_ASSIGN = 1,
|
|
SA_AMF_CSI_QUIESCED = 2,
|
|
SA_AMF_CSI_NOT_QUIESCED = 3,
|
|
SA_AMF_CSI_STILL_ACTIVE = 4,
|
|
} SaAmfCSITransitionDescriptorT;
|
|
|
|
typedef struct {
|
|
SaAmfCSITransitionDescriptorT transitionDescriptor;
|
|
SaNameT activeCompName;
|
|
} SaAmfCSIActiveDescriptorT;
|
|
|
|
typedef struct {
|
|
SaNameT activeCompName;
|
|
SaUint32T standbyRank;
|
|
} SaAmfCSIStandbyDescriptorT;
|
|
|
|
typedef union {
|
|
SaAmfCSIActiveDescriptorT activeDescriptor;
|
|
SaAmfCSIStandbyDescriptorT standbyDescriptor;
|
|
} SaAmfCSIStateDescriptorT;
|
|
|
|
typedef struct {
|
|
SaUint8T *attrName;
|
|
SaUint8T *attrValue;
|
|
|
|
} SaAmfCSIAttributeT;
|
|
|
|
typedef struct {
|
|
SaAmfCSIAttributeT *attr;
|
|
SaUint32T number;
|
|
} SaAmfCSIAttributeListT;
|
|
|
|
typedef struct {
|
|
SaAmfCSIFlagsT csiFlags;
|
|
SaNameT csiName;
|
|
SaAmfCSIStateDescriptorT csiStateDescriptor;
|
|
SaAmfCSIAttributeListT csiAttr;
|
|
} SaAmfCSIDescriptorT;
|
|
|
|
typedef struct {
|
|
SaNameT compName;
|
|
SaAmfHAStateT haState;
|
|
SaUint32T rank;
|
|
} SaAmfProtectionGroupMemberT;
|
|
|
|
|
|
typedef enum {
|
|
SA_AMF_PROTECTION_GROUP_NO_CHANGE = 1,
|
|
SA_AMF_PROTECTION_GROUP_ADDED = 2,
|
|
SA_AMF_PROTECTION_GROUP_REMOVED = 3,
|
|
SA_AMF_PROTECTION_GROUP_STATE_CHANGE = 4
|
|
} SaAmfProtectionGroupChangesT;
|
|
|
|
|
|
typedef struct {
|
|
SaAmfProtectionGroupMemberT member;
|
|
SaAmfProtectionGroupChangesT change;
|
|
} SaAmfProtectionGroupNotificationT;
|
|
|
|
typedef struct {
|
|
SaUint32T numberOfItems;
|
|
SaAmfProtectionGroupNotificationT *notificaton;
|
|
} SaAmfProtectionGruopNotificationBufferT;
|
|
|
|
typedef enum {
|
|
SA_AMF_NO_RECOMMENDATION = 1,
|
|
SA_AMF_COMPONENT_RESTART = 2,
|
|
SA_AMF_COMPONENT_FAILOVER = 3,
|
|
SA_AMF_NODE_SWITCHOVER = 4,
|
|
SA_AMF_NODE_FAILOVER = 5,
|
|
SA_AMF_NODE_FAILFAST = 6,
|
|
SA_AMF_CLUSTER_RESET = 7,
|
|
SA_AMF_APPLICATION_RESTART = 8
|
|
} SaAmfRecommendedRecoveryT;
|
|
|
|
#define SA_AMF_COMP_SA_AWARE 0x0001
|
|
#define SA_AMF_COMP_PROXY 0x0002
|
|
#define SA_AMF_COMP_PROXIED 0x0004
|
|
#define SA_AMF_COMP_LOCAL 0x0008
|
|
typedef SaUint32T saAmfCompCategoryT;
|
|
|
|
typedef enum {
|
|
SA_AMF_2N_REDUNDANCY_MODEL = 1,
|
|
SA_AMF_NPM_REDUNDANCY_MODEL = 2,
|
|
SA_AMF_N_WAY_REDUNDANCY_MODEL = 3,
|
|
SA_AMF_N_WAY_ACTIVE_REDUNDACY_MODEL = 4,
|
|
SA_AMF_NO_REDUNDANCY_MODEL= 5
|
|
} saAmfRedundancyModelT;
|
|
|
|
typedef enum {
|
|
SA_AMF_COMP_X_ACTIVE_AND_Y_STANDBY = 1,
|
|
SA_AMF_COMP_X_ACTIVE_OR_Y_STANDBY = 2,
|
|
SA_AMF_COMP_ONE_ACTIVE_OR_Y_STANDBY = 3,
|
|
SA_AMF_COMP_ONE_ACTIVE_OR_ONE_STANDBY = 4,
|
|
SA_AMF_COMP_X_ACTIVE = 5,
|
|
SA_AMF_COMP_1_ACTIVE = 6,
|
|
SA_AMF_COMP_NON_PRE_INSTANTIABLE = 7
|
|
} saAmfCompCapabilityModelT;
|
|
|
|
typedef enum {
|
|
SA_AMF_NODE_NAME = 1,
|
|
SA_AMF_SI_NAME = 2
|
|
} SaAmfAdditionalInfoIdT;
|
|
|
|
typedef void (*SaAmfHealthcheckCallbackT) (
|
|
SaInvocationT invocation,
|
|
const SaNameT *compName,
|
|
SaAmfHealthcheckKeyT *healthcheckKey);
|
|
|
|
typedef void (*SaAmfComponentTerminateCallbackT) (
|
|
SaInvocationT invocation,
|
|
const SaNameT *compName);
|
|
|
|
typedef void (*SaAmfCSISetCallbackT) (
|
|
SaInvocationT invocation,
|
|
const SaNameT *compName,
|
|
SaAmfHAStateT haState,
|
|
SaAmfCSIDescriptorT *csiDescriptor);
|
|
|
|
typedef void (*SaAmfCSIRemoveCallbackT) (
|
|
SaInvocationT invocation,
|
|
const SaNameT *compName,
|
|
const SaNameT *csiName,
|
|
SaAmfCSIFlagsT csiFlags);
|
|
|
|
typedef void (*SaAmfExternalComponentInstantiateCallbackT) (
|
|
SaInvocationT invocation,
|
|
const SaNameT *proxiedCompName);
|
|
|
|
typedef void (*SaAmfExternalComponentCleanupCallbackT) (
|
|
SaInvocationT invocation,
|
|
const SaNameT *proxiedCompName);
|
|
|
|
typedef void (*SaAmfProtectionGroupTrackCallbackT) (
|
|
const SaNameT *csiName,
|
|
SaAmfProtectionGroupNotificationT *notificationBuffer,
|
|
SaUint32T numberOfMembers,
|
|
SaAisErrorT error);
|
|
|
|
typedef struct {
|
|
SaAmfHealthcheckCallbackT
|
|
saAmfHealthcheckCallback;
|
|
SaAmfComponentTerminateCallbackT
|
|
saAmfComponentTerminateCallback;
|
|
SaAmfCSISetCallbackT
|
|
saAmfCSISetCallback;
|
|
SaAmfCSIRemoveCallbackT
|
|
saAmfCSIRemoveCallback;
|
|
SaAmfProtectionGroupTrackCallbackT
|
|
saAmfProtectionGroupTrackCallback;
|
|
SaAmfExternalComponentInstantiateCallbackT
|
|
saAmfProxiedComponentInstantiateCallback;
|
|
SaAmfExternalComponentCleanupCallbackT
|
|
saAmfProxiedComponentCleanupCallback;
|
|
} SaAmfCallbacksT;
|
|
|
|
/*
|
|
* Interfaces
|
|
*/
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
SaAisErrorT
|
|
saAmfInitialize (
|
|
SaAmfHandleT *amfHandle,
|
|
const SaAmfCallbacksT *amfCallbacks,
|
|
SaVersionT *version);
|
|
|
|
SaAisErrorT
|
|
saAmfSelectionObjectGet (
|
|
SaAmfHandleT amfHandle,
|
|
SaSelectionObjectT *selectionObject);
|
|
|
|
SaAisErrorT
|
|
saAmfDispatch (
|
|
SaAmfHandleT amfHandle,
|
|
SaDispatchFlagsT dispatchFlags);
|
|
|
|
SaAisErrorT
|
|
saAmfFinalize (
|
|
SaAmfHandleT amfHandle);
|
|
|
|
SaAisErrorT
|
|
saAmfComponentRegister (
|
|
SaAmfHandleT amfHandle,
|
|
const SaNameT *compName,
|
|
const SaNameT *proxyCompName);
|
|
|
|
SaAisErrorT
|
|
saAmfComponentUnregister (
|
|
SaAmfHandleT amfHandle,
|
|
const SaNameT *compName,
|
|
const SaNameT *proxyCompName);
|
|
|
|
SaAisErrorT
|
|
saAmfComponentNameGet (
|
|
SaAmfHandleT amfHandle,
|
|
SaNameT *compName);
|
|
|
|
SaAisErrorT
|
|
saAmfPmStart (
|
|
SaAmfHandleT amfHandle,
|
|
const SaNameT *compName,
|
|
SaUint64T processId,
|
|
SaInt32T descendentsTreeDepth,
|
|
SaAmfPmErrorsT pmErrors,
|
|
SaAmfRecommendedRecoveryT recommendedRecovery);
|
|
|
|
SaAisErrorT
|
|
saAmfPmStop (
|
|
SaAmfHandleT amfHandle,
|
|
const SaNameT *compName,
|
|
SaAmfPmStopQualifierT stopQualifier,
|
|
SaInt64T processId,
|
|
SaAmfPmErrorsT pmErrors);
|
|
|
|
SaAisErrorT
|
|
saAmfHealthcheckStart (
|
|
SaAmfHandleT amfHandle,
|
|
const SaNameT *compName,
|
|
const SaAmfHealthcheckKeyT *healthcheckKey,
|
|
SaAmfHealthcheckInvocationT invocationType,
|
|
SaAmfRecommendedRecoveryT recommendedRecovery);
|
|
|
|
SaAisErrorT
|
|
saAmfHealthcheckConfirm (
|
|
SaAmfHandleT amfHandle,
|
|
const SaNameT *compName,
|
|
const SaAmfHealthcheckKeyT *healthcheckKey,
|
|
SaAisErrorT healthcheckResult);
|
|
|
|
SaAisErrorT
|
|
saAmfHealthcheckStop (
|
|
SaAmfHandleT amfHandle,
|
|
const SaNameT *compName,
|
|
const SaAmfHealthcheckKeyT *healthcheckKey);
|
|
|
|
SaAisErrorT
|
|
saAmfHAStateGet (
|
|
SaAmfHandleT amfHandle,
|
|
const SaNameT *compName,
|
|
const SaNameT *csiName,
|
|
SaAmfHAStateT *haState);
|
|
|
|
|
|
SaAisErrorT
|
|
saAmfCSIQuiescingComplete(
|
|
SaAmfHandleT amfHandle,
|
|
SaInvocationT invocation,
|
|
SaAisErrorT error);
|
|
|
|
SaAisErrorT
|
|
saAmfProtectionGroupTrack (
|
|
SaAmfHandleT amfHandle,
|
|
const SaNameT *csiName,
|
|
SaUint8T trackFlags,
|
|
const SaAmfProtectionGroupNotificationT *notificationBuffer);
|
|
|
|
SaAisErrorT
|
|
saAmfProtectionGroupTrackStop (
|
|
SaAmfHandleT amfHandle,
|
|
const SaNameT *csiName);
|
|
|
|
SaAisErrorT
|
|
saAmfComponentErrorReport (
|
|
SaAmfHandleT amfHandle,
|
|
const SaNameT *erroneousComponent,
|
|
SaTimeT errorDetectionTime,
|
|
SaAmfRecommendedRecoveryT recommendedRecovery,
|
|
SaNtfIdentifierT ntfIdentifier);
|
|
|
|
SaAisErrorT
|
|
saAmfComponentErrorClear (
|
|
SaAmfHandleT amfHandle,
|
|
const SaNameT *compName,
|
|
SaNtfIdentifierT ntfIdentifier);
|
|
|
|
|
|
SaAisErrorT
|
|
saAmfResponse (
|
|
SaAmfHandleT amfHandle,
|
|
SaInvocationT invocation,
|
|
SaAisErrorT error);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* AIS_AMF_H_DEFINED */
|