Logo Search packages:      
Sourcecode: pacemaker version File versions  Download package

fsa_matrix.h

/* 
 * Copyright (C) 2004 Andrew Beekhof <andrew@beekhof.net>
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifndef XML_FSA_MATRIX__H
#define XML_FSA_MATRIX__H

/*
 *    The state transition table.  The rows are inputs, and
 *    the columns are states.
 */
const enum crmd_fsa_state crmd_fsa_state [MAXINPUT][MAXSTATE] = 
{
/* Got an I_NULL */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_CIB_OP */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_CIB_UPDATE */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_RECOVERY,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_RECOVERY,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_DC_TIMEOUT */
      {
            /* S_IDLE         ==> */      S_RECOVERY,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_RECOVERY,
            /* S_FINALIZE_JOIN      ==> */      S_RECOVERY,
            /* S_NOT_DC       ==> */      S_ELECTION,
            /* S_POLICY_ENGINE      ==> */      S_RECOVERY,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RECOVERY,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_ELECTION,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_RECOVERY,
            /* S_HALT         ==> */      S_ELECTION,
      },

/* Got an I_ELECTION */
      {
            /* S_IDLE         ==> */      S_ELECTION,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_ELECTION,
            /* S_FINALIZE_JOIN      ==> */      S_ELECTION,
            /* S_NOT_DC       ==> */      S_ELECTION,
            /* S_POLICY_ENGINE      ==> */      S_ELECTION,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_ELECTION,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_ELECTION,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_PE_CALC */
      {
            /* S_IDLE         ==> */      S_POLICY_ENGINE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_RECOVERY,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_RECOVERY,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_POLICY_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_RELEASE_DC */
      {
            /* S_IDLE         ==> */      S_RELEASE_DC,
            /* S_ELECTION           ==> */      S_RELEASE_DC,
            /* S_INTEGRATION  ==> */      S_RELEASE_DC,
            /* S_FINALIZE_JOIN      ==> */      S_RELEASE_DC,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_RELEASE_DC,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_RELEASE_DC,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_ELECTION_DC */
      {
            /* S_IDLE         ==> */      S_INTEGRATION,
            /* S_ELECTION           ==> */      S_INTEGRATION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_INTEGRATION,
            /* S_NOT_DC       ==> */      S_INTEGRATION,
            /* S_POLICY_ENGINE      ==> */      S_INTEGRATION,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_INTEGRATION,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_ERROR */
      {
            /* S_IDLE         ==> */      S_RECOVERY,
            /* S_ELECTION           ==> */      S_RECOVERY,
            /* S_INTEGRATION  ==> */      S_RECOVERY,
            /* S_FINALIZE_JOIN      ==> */      S_RECOVERY,
            /* S_NOT_DC       ==> */      S_RECOVERY,
            /* S_POLICY_ENGINE      ==> */      S_RECOVERY,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RECOVERY,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_RECOVERY,
            /* S_STOPPING           ==> */      S_TERMINATE,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_RECOVERY,
            /* S_HALT         ==> */      S_RECOVERY,
      },

/* Got an I_FAIL */
      {
            /* S_IDLE         ==> */      S_RECOVERY,
            /* S_ELECTION           ==> */      S_RELEASE_DC,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_INTEGRATION,
            /* S_NOT_DC       ==> */      S_RECOVERY,
            /* S_POLICY_ENGINE      ==> */      S_INTEGRATION,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STOPPING,
            /* S_PENDING            ==> */      S_STOPPING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_POLICY_ENGINE,
            /* S_HALT         ==> */      S_RELEASE_DC,
      },

/* Got an I_INTEGRATED */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_FINALIZE_JOIN,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_RECOVERY,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_FINALIZED */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_POLICY_ENGINE,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_RECOVERY,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_NODE_JOIN */
      {
            /* S_IDLE         ==> */      S_INTEGRATION,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_INTEGRATION,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_INTEGRATION,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_INTEGRATION,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_NOT_DC */
      {
            /* S_IDLE         ==> */      S_RECOVERY,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_RECOVERY,
            /* S_FINALIZE_JOIN      ==> */      S_RECOVERY,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_RECOVERY,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_NOT_DC,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_RECOVERY,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_RECOVERED */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_INTEGRATION,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_PENDING,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_RELEASE_FAIL */
      {
            /* S_IDLE         ==> */      S_STOPPING,
            /* S_ELECTION           ==> */      S_STOPPING,
            /* S_INTEGRATION  ==> */      S_STOPPING,
            /* S_FINALIZE_JOIN      ==> */      S_STOPPING,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_STOPPING,
            /* S_RECOVERY           ==> */      S_STOPPING,
            /* S_RELEASE_DC         ==> */      S_STOPPING,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_STOPPING,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_RELEASE_SUCCESS */
      {
            /* S_IDLE         ==> */      S_RECOVERY,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_RECOVERY,
            /* S_FINALIZE_JOIN      ==> */      S_RECOVERY,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_RECOVERY,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_PENDING,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_RECOVERY,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_RESTART */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_TE_SUCCESS */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_IDLE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_ROUTER */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_SHUTDOWN */
      {
            /* S_IDLE         ==> */      S_POLICY_ENGINE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_STOPPING,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STOPPING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_POLICY_ENGINE,
            /* S_HALT         ==> */      S_ELECTION,
      },

/* Got an I_STOP */
      {
            /* S_IDLE         ==> */      S_STOPPING,
            /* S_ELECTION           ==> */      S_STOPPING,
            /* S_INTEGRATION  ==> */      S_STOPPING,
            /* S_FINALIZE_JOIN      ==> */      S_STOPPING,
            /* S_NOT_DC       ==> */      S_STOPPING,
            /* S_POLICY_ENGINE      ==> */      S_STOPPING,
            /* S_RECOVERY           ==> */      S_STOPPING,
            /* S_RELEASE_DC         ==> */      S_STOPPING,
            /* S_STARTING           ==> */      S_STOPPING,
            /* S_PENDING            ==> */      S_STOPPING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_STOPPING,
            /* S_HALT         ==> */      S_STOPPING,
      },

/* Got an I_TERMINATE */
      {
            /* S_IDLE         ==> */      S_TERMINATE,
            /* S_ELECTION           ==> */      S_TERMINATE,
            /* S_INTEGRATION  ==> */      S_TERMINATE,
            /* S_FINALIZE_JOIN      ==> */      S_TERMINATE,
            /* S_NOT_DC       ==> */      S_TERMINATE,
            /* S_POLICY_ENGINE      ==> */      S_TERMINATE,
            /* S_RECOVERY           ==> */      S_TERMINATE,
            /* S_RELEASE_DC         ==> */      S_TERMINATE,
            /* S_STARTING           ==> */      S_TERMINATE,
            /* S_PENDING            ==> */      S_TERMINATE,
            /* S_STOPPING           ==> */      S_TERMINATE,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TERMINATE,
            /* S_HALT         ==> */      S_TERMINATE,
      },

/* Got an I_STARTUP */
      {
            /* S_IDLE         ==> */      S_RECOVERY,
            /* S_ELECTION           ==> */      S_RECOVERY,
            /* S_INTEGRATION  ==> */      S_RECOVERY,
            /* S_FINALIZE_JOIN      ==> */      S_RECOVERY,
            /* S_NOT_DC       ==> */      S_RECOVERY,
            /* S_POLICY_ENGINE      ==> */      S_RECOVERY,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_RECOVERY,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_PE_SUCCESS */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_TRANSITION_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_JOIN_OFFER */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_PENDING,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_JOIN_REQUEST */
      {
            /* S_IDLE         ==> */      S_INTEGRATION,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_INTEGRATION,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_INTEGRATION,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_INTEGRATION,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_JOIN_RESULT */
      {
            /* S_IDLE         ==> */      S_INTEGRATION,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_PENDING,
            /* S_POLICY_ENGINE      ==> */      S_INTEGRATION,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_RECOVERY,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_INTEGRATION,
            /* S_HALT         ==> */      S_HALT,
      },    

/* Got an I_WAIT_FOR_EVENT */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_DC_HEARTBEAT */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_LRM_EVENT */
      {
            /* S_IDLE         ==> */      S_IDLE,
            /* S_ELECTION           ==> */      S_ELECTION,
            /* S_INTEGRATION  ==> */      S_INTEGRATION,
            /* S_FINALIZE_JOIN      ==> */      S_FINALIZE_JOIN,
            /* S_NOT_DC       ==> */      S_NOT_DC,
            /* S_POLICY_ENGINE      ==> */      S_POLICY_ENGINE,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_TRANSITION_ENGINE,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_PENDING */
      {
            /* S_IDLE         ==> */      S_PENDING,
            /* S_ELECTION           ==> */      S_PENDING,
            /* S_INTEGRATION  ==> */      S_PENDING,
            /* S_FINALIZE_JOIN      ==> */      S_PENDING,
            /* S_NOT_DC       ==> */      S_PENDING,
            /* S_POLICY_ENGINE      ==> */      S_PENDING,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_PENDING,
            /* S_PENDING            ==> */      S_PENDING,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_PENDING,
            /* S_HALT         ==> */      S_HALT,
      },

/* Got an I_HALT */
      {
            /* S_IDLE         ==> */      S_HALT,
            /* S_ELECTION           ==> */      S_HALT,
            /* S_INTEGRATION  ==> */      S_HALT,
            /* S_FINALIZE_JOIN      ==> */      S_HALT,
            /* S_NOT_DC       ==> */      S_HALT,
            /* S_POLICY_ENGINE      ==> */      S_HALT,
            /* S_RECOVERY           ==> */      S_RECOVERY,
            /* S_RELEASE_DC         ==> */      S_RELEASE_DC,
            /* S_STARTING           ==> */      S_STARTING,
            /* S_PENDING            ==> */      S_HALT,
            /* S_STOPPING           ==> */      S_STOPPING,
            /* S_TERMINATE          ==> */      S_TERMINATE,
            /* S_TRANSITION_ENGINE  ==> */      S_HALT,
            /* S_HALT         ==> */      S_HALT,
      },
};


/*
 *    The action table.  Each entry is a set of actions to take or-ed
 *    together.  Like the state table, the rows are inputs, and
 *    the columns are states.
 */

/* NOTE: In the fsa, the actions are extracted then state is updated. */

const long long crmd_fsa_actions [MAXINPUT][MAXSTATE] = {

/* Got an I_NULL */
      {
            /* S_IDLE         ==> */      A_NOTHING,
            /* S_ELECTION           ==> */      A_NOTHING,
            /* S_INTEGRATION  ==> */      A_NOTHING,
            /* S_FINALIZE_JOIN      ==> */      A_NOTHING,
            /* S_NOT_DC       ==> */      A_NOTHING,
            /* S_POLICY_ENGINE      ==> */      A_NOTHING,
            /* S_RECOVERY           ==> */      A_NOTHING,
            /* S_RELEASE_DC         ==> */      A_NOTHING,
            /* S_STARTING           ==> */      A_NOTHING,
            /* S_PENDING            ==> */      A_NOTHING,
            /* S_STOPPING           ==> */      A_NOTHING,
            /* S_TERMINATE          ==> */      A_NOTHING,
            /* S_TRANSITION_ENGINE  ==> */      A_NOTHING,
            /* S_HALT         ==> */      A_NOTHING,
      },

/* Got an I_CIB_OP */
      {
            /* S_IDLE         ==> */      A_CIB_INVOKE,
            /* S_ELECTION           ==> */      A_CIB_INVOKE,
            /* S_INTEGRATION  ==> */      A_CIB_INVOKE, 
            /* S_FINALIZE_JOIN      ==> */      A_CIB_INVOKE, 
            /* S_NOT_DC       ==> */      A_CIB_INVOKE,
            /* S_POLICY_ENGINE      ==> */      A_CIB_INVOKE,
            /* S_RECOVERY           ==> */      A_CIB_INVOKE,
            /* S_RELEASE_DC         ==> */      A_CIB_INVOKE,
            /* S_STARTING           ==> */      A_CIB_INVOKE,
            /* S_PENDING            ==> */      A_CIB_INVOKE,
            /* S_STOPPING           ==> */      A_CIB_INVOKE,
            /* S_TERMINATE          ==> */      A_CIB_INVOKE,
            /* S_TRANSITION_ENGINE  ==> */      A_CIB_INVOKE,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_CIB_UPDATE */
      {
            /* S_IDLE         ==> */      A_LOG,
            /* S_ELECTION           ==> */      A_LOG,
            /* S_INTEGRATION  ==> */      A_WARN,
            /* S_FINALIZE_JOIN      ==> */      A_WARN,
            /* S_NOT_DC       ==> */      A_WARN,
            /* S_POLICY_ENGINE      ==> */      A_LOG,
            /* S_RECOVERY           ==> */      A_WARN,
            /* S_RELEASE_DC         ==> */      A_WARN,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_WARN,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_LOG,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_DC_TIMEOUT */
      {
            /* S_IDLE         ==> */      A_WARN,
            /* S_ELECTION           ==> */      A_ELECTION_VOTE,
            /* S_INTEGRATION  ==> */      A_WARN,
            /* S_FINALIZE_JOIN      ==> */      A_WARN,
            /* S_NOT_DC       ==> */      A_ELECTION_VOTE|A_WARN,
            /* S_POLICY_ENGINE      ==> */      A_WARN,
            /* S_RECOVERY           ==> */      A_NOTHING,
            /* S_RELEASE_DC         ==> */      A_WARN,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_ELECTION_VOTE|A_WARN,
            /* S_STOPPING           ==> */      A_NOTHING,
            /* S_TERMINATE          ==> */      A_NOTHING,
            /* S_TRANSITION_ENGINE  ==> */      A_TE_CANCEL|A_WARN,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_ELECTION */
      {
            /* S_IDLE         ==> */      A_ELECTION_VOTE,
            /* S_ELECTION           ==> */      A_ELECTION_VOTE,
            /* S_INTEGRATION  ==> */      A_ELECTION_VOTE,
            /* S_FINALIZE_JOIN      ==> */      A_ELECTION_VOTE,
            /* S_NOT_DC       ==> */      A_ELECTION_VOTE,
            /* S_POLICY_ENGINE      ==> */      A_ELECTION_VOTE,
            /* S_RECOVERY           ==> */      A_LOG,
            /* S_RELEASE_DC         ==> */      A_LOG,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_ELECTION_VOTE,
            /* S_STOPPING           ==> */      A_LOG,
            /* S_TERMINATE          ==> */      A_LOG,
            /* S_TRANSITION_ENGINE  ==> */      A_ELECTION_VOTE,
            /* S_HALT         ==> */      A_ELECTION_VOTE,
      },

/* Got an I_PE_CALC */
      {
            /* S_IDLE         ==> */      A_PE_INVOKE,
            /* S_ELECTION           ==> */      A_NOTHING,
            /* S_INTEGRATION  ==> */      A_NOTHING,
            /* S_FINALIZE_JOIN      ==> */      A_NOTHING,
            /* S_NOT_DC       ==> */      A_ERROR,
            /* S_POLICY_ENGINE      ==> */      A_PE_INVOKE,
            /* S_RECOVERY           ==> */      A_NOTHING,
            /* S_RELEASE_DC         ==> */      A_NOTHING,
            /* S_STARTING           ==> */      A_ERROR,
            /* S_PENDING            ==> */      A_ERROR,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_ERROR,
            /* S_TRANSITION_ENGINE  ==> */      A_PE_INVOKE,
            /* S_HALT         ==> */      A_ERROR,
      },
      
/* Got an I_RELEASE_DC */
      {
            /* S_IDLE         ==> */      O_RELEASE,
            /* S_ELECTION           ==> */      O_RELEASE,
            /* S_INTEGRATION  ==> */      O_RELEASE|A_WARN,
            /* S_FINALIZE_JOIN      ==> */      O_RELEASE|A_WARN,
            /* S_NOT_DC       ==> */      A_WARN,
            /* S_POLICY_ENGINE      ==> */      O_RELEASE|A_WARN,
            /* S_RECOVERY           ==> */      O_RELEASE,
            /* S_RELEASE_DC         ==> */      O_RELEASE|A_WARN,
            /* S_STARTING           ==> */      A_ERROR,
            /* S_PENDING            ==> */      A_WARN,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      O_RELEASE|A_WARN,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_ELECTION_DC */
      {
            /* S_IDLE         ==> */      A_WARN|A_ELECTION_VOTE,
            /* S_ELECTION           ==> */      A_LOG|A_DC_TAKEOVER|A_PE_START|A_TE_START|A_DC_JOIN_OFFER_ALL|A_DC_TIMER_STOP,
            /* S_INTEGRATION  ==> */      A_WARN|A_ELECTION_VOTE|A_DC_JOIN_OFFER_ALL,
            /* S_FINALIZE_JOIN      ==> */      A_WARN|A_ELECTION_VOTE|A_DC_JOIN_OFFER_ALL,
            /* S_NOT_DC       ==> */      A_LOG|A_ELECTION_VOTE,
            /* S_POLICY_ENGINE      ==> */      A_WARN|A_ELECTION_VOTE,
            /* S_RECOVERY           ==> */      A_WARN,
            /* S_RELEASE_DC         ==> */      A_WARN|A_ELECTION_VOTE,
            /* S_STARTING           ==> */      A_LOG|A_WARN,
            /* S_PENDING            ==> */      A_LOG|A_WARN,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_WARN|A_ELECTION_VOTE,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_ERROR */
      {
            /* S_IDLE         ==> */      A_ERROR|A_RECOVER|O_RELEASE|A_ELECTION_START,
            /* S_ELECTION           ==> */      A_ERROR|A_RECOVER|O_RELEASE,
            /* S_INTEGRATION  ==> */      A_ERROR|A_RECOVER|O_RELEASE|A_ELECTION_START,
            /* S_FINALIZE_JOIN      ==> */      A_ERROR|A_RECOVER|O_RELEASE|A_ELECTION_START,
            /* S_NOT_DC       ==> */      A_ERROR|A_RECOVER,
            /* S_POLICY_ENGINE      ==> */      A_ERROR|A_RECOVER|O_RELEASE|A_ELECTION_START,
            /* S_RECOVERY           ==> */      A_ERROR|O_RELEASE,
            /* S_RELEASE_DC         ==> */      A_ERROR|A_RECOVER,
            /* S_STARTING           ==> */      A_ERROR|A_RECOVER,
            /* S_PENDING            ==> */      A_ERROR|A_RECOVER,
            /* S_STOPPING           ==> */      A_ERROR|A_EXIT_1,
            /* S_TERMINATE          ==> */      A_ERROR|A_EXIT_1,
            /* S_TRANSITION_ENGINE  ==> */      A_ERROR|A_RECOVER|O_RELEASE|A_ELECTION_START,
            /* S_HALT         ==> */      A_ERROR|A_RECOVER|O_RELEASE|A_ELECTION_START,
      },

/* Got an I_FAIL */
      {
            /* S_IDLE         ==> */      A_WARN,
            /* S_ELECTION           ==> */      A_WARN,
            /* S_INTEGRATION  ==> */      A_WARN|A_DC_JOIN_OFFER_ALL,
            /* S_FINALIZE_JOIN      ==> */      A_WARN|A_DC_JOIN_OFFER_ALL,
            /* S_NOT_DC       ==> */      A_WARN,
            /* S_POLICY_ENGINE      ==> */      A_WARN|A_DC_JOIN_OFFER_ALL|A_TE_CANCEL,
            /* S_RECOVERY           ==> */      A_WARN|O_RELEASE,
            /* S_RELEASE_DC         ==> */      A_WARN,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_WARN,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN|A_EXIT_1,
            /* S_TRANSITION_ENGINE  ==> */      A_WARN|O_TE_RESTART|A_RECOVER,
            /* S_HALT         ==> */      A_WARN,
      },
      
/* Got an I_INTEGRATED */
      {
            /* S_IDLE         ==> */      A_NOTHING,
            /* S_ELECTION           ==> */      A_WARN,
            /* S_INTEGRATION  ==> */      A_DC_JOIN_FINALIZE,
            /* S_FINALIZE_JOIN      ==> */      A_WARN,
            /* S_NOT_DC       ==> */      A_WARN,
            /* S_POLICY_ENGINE      ==> */      A_NOTHING,
            /* S_RECOVERY           ==> */      A_WARN,
            /* S_RELEASE_DC         ==> */      A_WARN,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_WARN,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_NOTHING,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_FINALIZED */
      {
            /* S_IDLE         ==> */      A_NOTHING,
            /* S_ELECTION           ==> */      A_WARN,
            /* S_INTEGRATION  ==> */      A_WARN,
            /* S_FINALIZE_JOIN      ==> */      A_TE_CANCEL,
            /* S_NOT_DC       ==> */      A_WARN,
            /* S_POLICY_ENGINE      ==> */      A_NOTHING,
            /* S_RECOVERY           ==> */      A_WARN,
            /* S_RELEASE_DC         ==> */      A_WARN,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_WARN,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_NOTHING,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_NODE_JOIN */
      {
            /* S_IDLE         ==> */      A_TE_HALT|A_DC_JOIN_OFFER_ONE,
            /* S_ELECTION           ==> */      A_WARN,
            /* S_INTEGRATION  ==> */      A_DC_JOIN_OFFER_ONE,
            /* S_FINALIZE_JOIN      ==> */      A_DC_JOIN_OFFER_ONE,
            /* S_NOT_DC       ==> */      A_WARN,
            /* S_POLICY_ENGINE      ==> */      A_DC_JOIN_OFFER_ONE,
            /* S_RECOVERY           ==> */      A_WARN,
            /* S_RELEASE_DC         ==> */      A_WARN,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_WARN,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_TE_HALT|A_DC_JOIN_OFFER_ONE,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_NOT_DC */
      {
            /* S_IDLE         ==> */      A_WARN|O_RELEASE,
            /* S_ELECTION           ==> */      A_ERROR|A_ELECTION_START|A_DC_TIMER_STOP,
            /* S_INTEGRATION  ==> */      A_ERROR|O_RELEASE,
            /* S_FINALIZE_JOIN      ==> */      A_ERROR|O_RELEASE,
            /* S_NOT_DC       ==> */      A_LOG,
            /* S_POLICY_ENGINE      ==> */      A_ERROR|O_RELEASE,
            /* S_RECOVERY           ==> */      A_ERROR|O_RELEASE,
            /* S_RELEASE_DC         ==> */      A_ERROR|O_RELEASE,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_LOG|A_DC_TIMER_STOP,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_ERROR|O_RELEASE,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_RECOVERED */
      {
            /* S_IDLE         ==> */      A_WARN,
            /* S_ELECTION           ==> */      A_ELECTION_VOTE,
            /* S_INTEGRATION  ==> */      A_WARN,
            /* S_FINALIZE_JOIN      ==> */      A_WARN,
            /* S_NOT_DC       ==> */      A_WARN,
            /* S_POLICY_ENGINE      ==> */      A_WARN,
            /* S_RECOVERY           ==> */      A_LOG,
            /* S_RELEASE_DC         ==> */      A_WARN,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_WARN,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_WARN,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_RELEASE_FAIL */
      {
            /* S_IDLE         ==> */      A_WARN,
            /* S_ELECTION           ==> */      A_WARN,
            /* S_INTEGRATION  ==> */      A_WARN,
            /* S_FINALIZE_JOIN      ==> */      A_WARN,
            /* S_NOT_DC       ==> */      A_WARN,
            /* S_POLICY_ENGINE      ==> */      A_NOTHING,
            /* S_RECOVERY           ==> */      A_WARN|A_SHUTDOWN_REQ,
            /* S_RELEASE_DC         ==> */      A_NOTHING,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_WARN,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_WARN,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_RELEASE_SUCCESS */
      {
            /* S_IDLE         ==> */      A_WARN,
            /* S_ELECTION           ==> */      A_WARN,
            /* S_INTEGRATION  ==> */      A_WARN,
            /* S_FINALIZE_JOIN      ==> */      A_WARN,
            /* S_NOT_DC       ==> */      A_WARN,
            /* S_POLICY_ENGINE      ==> */      A_WARN,
            /* S_RECOVERY           ==> */      A_WARN,
            /* S_RELEASE_DC         ==> */      A_LOG,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_LOG,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_WARN,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_RESTART */
      {
            /* S_IDLE         ==> */      A_NOTHING,
            /* S_ELECTION           ==> */      A_LOG|A_ELECTION_VOTE,
            /* S_INTEGRATION  ==> */      A_LOG|A_DC_JOIN_OFFER_ALL,
            /* S_FINALIZE_JOIN      ==> */      A_LOG|A_DC_JOIN_FINALIZE,
            /* S_NOT_DC       ==> */      A_LOG|A_NOTHING,
            /* S_POLICY_ENGINE      ==> */      A_LOG|A_PE_INVOKE,
            /* S_RECOVERY           ==> */      A_LOG|A_RECOVER|O_RELEASE,
            /* S_RELEASE_DC         ==> */      A_LOG|O_RELEASE,
            /* S_STARTING           ==> */      A_LOG,
            /* S_PENDING            ==> */      A_LOG,
            /* S_STOPPING           ==> */      A_LOG,
            /* S_TERMINATE          ==> */      A_LOG,
            /* S_TRANSITION_ENGINE  ==> */      A_LOG|A_TE_INVOKE,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_TE_SUCCESS */
      {
            /* S_IDLE         ==> */      A_LOG,
            /* S_ELECTION           ==> */      A_WARN,
            /* S_INTEGRATION  ==> */      A_WARN,
            /* S_FINALIZE_JOIN      ==> */      A_WARN,
            /* S_NOT_DC       ==> */      A_ERROR,
            /* S_POLICY_ENGINE      ==> */      A_WARN,
            /* S_RECOVERY           ==> */      A_RECOVER|A_WARN,
            /* S_RELEASE_DC         ==> */      A_WARN,
            /* S_STARTING           ==> */      A_ERROR,
            /* S_PENDING            ==> */      A_ERROR,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_LOG,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_ROUTER */
      {
            /* S_IDLE         ==> */      A_MSG_ROUTE,
            /* S_ELECTION           ==> */      A_MSG_ROUTE,
            /* S_INTEGRATION  ==> */      A_MSG_ROUTE,
            /* S_FINALIZE_JOIN      ==> */      A_MSG_ROUTE,
            /* S_NOT_DC       ==> */      A_MSG_ROUTE,
            /* S_POLICY_ENGINE      ==> */      A_MSG_ROUTE,
            /* S_RECOVERY           ==> */      A_MSG_ROUTE,
            /* S_RELEASE_DC         ==> */      A_MSG_ROUTE,
            /* S_STARTING           ==> */      A_MSG_ROUTE,
            /* S_PENDING            ==> */      A_MSG_ROUTE,
            /* S_STOPPING           ==> */      A_MSG_ROUTE,
            /* S_TERMINATE          ==> */      A_MSG_ROUTE,
            /* S_TRANSITION_ENGINE  ==> */      A_MSG_ROUTE,
            /* S_HALT         ==> */      A_WARN|A_MSG_ROUTE,
      },

/* Got an I_SHUTDOWN */
      {
            /* S_IDLE         ==> */      A_LOG|A_SHUTDOWN_REQ,
            /* S_ELECTION           ==> */      A_LOG|A_SHUTDOWN_REQ|A_ELECTION_VOTE,
            /* S_INTEGRATION  ==> */      A_LOG|A_SHUTDOWN_REQ,
            /* S_FINALIZE_JOIN      ==> */      A_LOG|A_SHUTDOWN_REQ,
            /* S_NOT_DC       ==> */      A_SHUTDOWN_REQ,
            /* S_POLICY_ENGINE      ==> */      A_LOG|A_SHUTDOWN_REQ,
            /* S_RECOVERY           ==> */      A_WARN|O_EXIT|O_RELEASE,
            /* S_RELEASE_DC         ==> */      A_WARN|A_SHUTDOWN_REQ,
            /* S_STARTING           ==> */      A_WARN|O_EXIT,
            /* S_PENDING            ==> */      A_SHUTDOWN_REQ,
            /* S_STOPPING           ==> */      A_LOG,
            /* S_TERMINATE          ==> */      A_LOG,
            /* S_TRANSITION_ENGINE  ==> */      A_WARN|A_SHUTDOWN_REQ,
            /* S_HALT         ==> */      A_WARN|A_ELECTION_START|A_SHUTDOWN_REQ,
      },

/* Got an I_STOP */
      {
            /* S_IDLE         ==> */      A_ERROR|O_RELEASE|O_EXIT,
            /* S_ELECTION           ==> */      O_RELEASE|O_EXIT,
            /* S_INTEGRATION  ==> */      A_ERROR|O_RELEASE|O_EXIT,
            /* S_FINALIZE_JOIN      ==> */      A_ERROR|O_RELEASE|O_EXIT,
            /* S_NOT_DC       ==> */      O_EXIT,
            /* S_POLICY_ENGINE      ==> */      A_WARN|O_RELEASE|O_EXIT,
            /* S_RECOVERY           ==> */      A_ERROR|O_RELEASE|O_EXIT,
            /* S_RELEASE_DC         ==> */      A_ERROR|O_RELEASE|O_EXIT,
            /* S_STARTING           ==> */      O_EXIT,
            /* S_PENDING            ==> */      O_EXIT,
            /* S_STOPPING           ==> */      O_EXIT,
            /* S_TERMINATE          ==> */      A_ERROR|A_EXIT_1,
            /* S_TRANSITION_ENGINE  ==> */      A_LOG|O_RELEASE|O_EXIT,
            /* S_HALT         ==> */      O_RELEASE|O_EXIT|A_WARN,
      },

/* Got an I_TERMINATE */
      {
            /* S_IDLE         ==> */      A_ERROR|O_EXIT,
            /* S_ELECTION           ==> */      A_ERROR|O_EXIT,
            /* S_INTEGRATION  ==> */      A_ERROR|O_EXIT,
            /* S_FINALIZE_JOIN      ==> */      A_ERROR|O_EXIT,
            /* S_NOT_DC       ==> */      A_ERROR|O_EXIT,
            /* S_POLICY_ENGINE      ==> */      A_ERROR|O_EXIT,
            /* S_RECOVERY           ==> */      A_ERROR|O_EXIT,
            /* S_RELEASE_DC         ==> */      A_ERROR|O_EXIT,
            /* S_STARTING           ==> */      O_EXIT,
            /* S_PENDING            ==> */      A_ERROR|O_EXIT,
            /* S_STOPPING           ==> */      O_EXIT,
            /* S_TERMINATE          ==> */      O_EXIT,
            /* S_TRANSITION_ENGINE  ==> */      A_ERROR|O_EXIT,
            /* S_HALT         ==> */      A_ERROR|O_EXIT,
      },

/* Got an I_STARTUP */
      {
            /* S_IDLE         ==> */      A_WARN,
            /* S_ELECTION           ==> */      A_WARN,
            /* S_INTEGRATION  ==> */      A_WARN,
            /* S_FINALIZE_JOIN      ==> */      A_WARN,
            /* S_NOT_DC       ==> */      A_WARN,
            /* S_POLICY_ENGINE      ==> */      A_WARN,
            /* S_RECOVERY           ==> */      A_WARN,
            /* S_RELEASE_DC         ==> */      A_WARN,
            /* S_STARTING           ==> */      A_LOG|A_STARTUP|A_CIB_START|A_LRM_CONNECT|A_CCM_CONNECT|A_HA_CONNECT|A_READCONFIG|A_STARTED,
            /* S_PENDING            ==> */      A_LOG,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_WARN,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_PE_SUCCESS */
      {
            /* S_IDLE         ==> */      A_LOG,
            /* S_ELECTION           ==> */      A_WARN,
            /* S_INTEGRATION  ==> */      A_WARN,
            /* S_FINALIZE_JOIN      ==> */      A_WARN,
            /* S_NOT_DC       ==> */      A_NOTHING,
            /* S_POLICY_ENGINE      ==> */      A_LOG|A_TE_INVOKE,
            /* S_RECOVERY           ==> */      A_RECOVER|A_LOG,
            /* S_RELEASE_DC         ==> */      A_LOG,
            /* S_STARTING           ==> */      A_ERROR,
            /* S_PENDING            ==> */      A_LOG,
            /* S_STOPPING           ==> */      A_ERROR,
            /* S_TERMINATE          ==> */      A_ERROR,
            /* S_TRANSITION_ENGINE  ==> */      A_LOG,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_JOIN_OFFER */
      {
            /* S_IDLE         ==> */      A_WARN|A_CL_JOIN_REQUEST,
            /* S_ELECTION           ==> */      A_WARN,
            /* S_INTEGRATION  ==> */      A_CL_JOIN_REQUEST,
            /* S_FINALIZE_JOIN      ==> */      A_CL_JOIN_REQUEST,
            /* S_NOT_DC       ==> */      A_CL_JOIN_REQUEST|A_DC_TIMER_STOP,
            /* S_POLICY_ENGINE      ==> */      A_WARN|A_CL_JOIN_REQUEST,
            /* S_RECOVERY           ==> */      A_WARN|A_CL_JOIN_REQUEST|A_DC_TIMER_STOP,
            /* S_RELEASE_DC         ==> */      A_WARN|A_CL_JOIN_REQUEST|A_DC_TIMER_STOP,
            /* S_STARTING           ==> */      A_LOG,
            /* S_PENDING            ==> */      A_CL_JOIN_REQUEST|A_DC_TIMER_STOP,
            /* S_STOPPING           ==> */      A_LOG,
            /* S_TERMINATE          ==> */      A_LOG,
            /* S_TRANSITION_ENGINE  ==> */      A_WARN|A_CL_JOIN_REQUEST,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_JOIN_REQUEST */
      {
            /* S_IDLE         ==> */      A_DC_JOIN_OFFER_ONE,
            /* S_ELECTION           ==> */      A_WARN,
            /* S_INTEGRATION  ==> */      A_DC_JOIN_PROCESS_REQ,
            /* S_FINALIZE_JOIN      ==> */      A_DC_JOIN_OFFER_ONE,
            /* S_NOT_DC       ==> */      A_WARN,
            /* S_POLICY_ENGINE      ==> */      A_DC_JOIN_OFFER_ONE,
            /* S_RECOVERY           ==> */      A_WARN,
            /* S_RELEASE_DC         ==> */      A_WARN,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_WARN,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_DC_JOIN_OFFER_ONE,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_JOIN_RESULT */
      {
            /* S_IDLE         ==> */      A_ERROR|A_TE_HALT|A_DC_JOIN_OFFER_ALL,
            /* S_ELECTION           ==> */      A_LOG,
            /* S_INTEGRATION  ==> */      A_LOG,
            /* S_FINALIZE_JOIN      ==> */      A_CL_JOIN_RESULT|A_DC_JOIN_PROCESS_ACK,
            /* S_NOT_DC       ==> */      A_ERROR|A_CL_JOIN_ANNOUNCE,
            /* S_POLICY_ENGINE      ==> */      A_ERROR|A_TE_HALT|A_DC_JOIN_OFFER_ALL,
            /* S_RECOVERY           ==> */      A_LOG,
            /* S_RELEASE_DC         ==> */      A_LOG,
            /* S_STARTING           ==> */      A_ERROR,
            /* S_PENDING            ==> */      A_CL_JOIN_RESULT,
            /* S_STOPPING           ==> */      A_ERROR,
            /* S_TERMINATE          ==> */      A_ERROR,
            /* S_TRANSITION_ENGINE  ==> */      A_ERROR|A_TE_HALT|A_DC_JOIN_OFFER_ALL,
            /* S_HALT         ==> */      A_WARN,
      },
      
/* Got an I_WAIT_FOR_EVENT */
      {
            /* S_IDLE         ==> */      A_LOG,
            /* S_ELECTION           ==> */      A_LOG,
            /* S_INTEGRATION  ==> */      A_LOG,
            /* S_FINALIZE_JOIN      ==> */      A_LOG,
            /* S_NOT_DC       ==> */      A_LOG,
            /* S_POLICY_ENGINE      ==> */      A_LOG,
            /* S_RECOVERY           ==> */      A_LOG,
            /* S_RELEASE_DC         ==> */      A_LOG,
            /* S_STARTING           ==> */      A_LOG,
            /* S_PENDING            ==> */      A_LOG,
            /* S_STOPPING           ==> */      A_LOG,
            /* S_TERMINATE          ==> */      A_LOG,
            /* S_TRANSITION_ENGINE  ==> */      A_LOG,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_DC_HEARTBEAT */
      {
            /* S_IDLE         ==> */      A_ERROR,
            /* S_ELECTION           ==> */      A_WARN|A_ELECTION_VOTE,
            /* S_INTEGRATION  ==> */      A_ERROR,
            /* S_FINALIZE_JOIN      ==> */      A_ERROR,
            /* S_NOT_DC       ==> */      A_NOTHING,
            /* S_POLICY_ENGINE      ==> */      A_ERROR,
            /* S_RECOVERY           ==> */      A_NOTHING,
            /* S_RELEASE_DC         ==> */      A_LOG,
            /* S_STARTING           ==> */      A_LOG,
            /* S_PENDING            ==> */      A_LOG|A_CL_JOIN_ANNOUNCE,
            /* S_STOPPING           ==> */      A_NOTHING,
            /* S_TERMINATE          ==> */      A_NOTHING,
            /* S_TRANSITION_ENGINE  ==> */      A_ERROR,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_LRM_EVENT */
      {
            /* S_IDLE         ==> */      A_LRM_EVENT,
            /* S_ELECTION           ==> */      A_LRM_EVENT,
            /* S_INTEGRATION  ==> */      A_LRM_EVENT,
            /* S_FINALIZE_JOIN      ==> */      A_LRM_EVENT,
            /* S_NOT_DC       ==> */      A_LRM_EVENT,
            /* S_POLICY_ENGINE      ==> */      A_LRM_EVENT,
            /* S_RECOVERY           ==> */      A_LRM_EVENT,
            /* S_RELEASE_DC         ==> */      A_LRM_EVENT,
            /* S_STARTING           ==> */      A_LRM_EVENT,
            /* S_PENDING            ==> */      A_LRM_EVENT,
            /* S_STOPPING           ==> */      A_LRM_EVENT,
            /* S_TERMINATE          ==> */      A_LRM_EVENT,
            /* S_TRANSITION_ENGINE  ==> */      A_LRM_EVENT,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_PENDING */
      {
            /* S_IDLE         ==> */      O_RELEASE,
            /* S_ELECTION           ==> */      O_RELEASE|A_DC_TIMER_STOP,
            /* S_INTEGRATION  ==> */      O_RELEASE,
            /* S_FINALIZE_JOIN      ==> */      O_RELEASE,
            /* S_NOT_DC       ==> */      A_LOG,
            /* S_POLICY_ENGINE      ==> */      O_RELEASE,
            /* S_RECOVERY           ==> */      A_WARN,
            /* S_RELEASE_DC         ==> */      A_WARN,
            /* S_STARTING           ==> */      A_LOG|A_DC_TIMER_START|A_CL_JOIN_QUERY,
            /* S_PENDING            ==> */      A_LOG,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      O_RELEASE,
            /* S_HALT         ==> */      A_WARN,
      },

/* Got an I_HALT */
      {
            /* S_IDLE         ==> */      A_WARN,
            /* S_ELECTION           ==> */      A_WARN,
            /* S_INTEGRATION  ==> */      A_WARN,
            /* S_FINALIZE_JOIN      ==> */      A_WARN,
            /* S_NOT_DC       ==> */      A_WARN,
            /* S_POLICY_ENGINE      ==> */      A_WARN,
            /* S_RECOVERY           ==> */      A_WARN,
            /* S_RELEASE_DC         ==> */      A_WARN,
            /* S_STARTING           ==> */      A_WARN,
            /* S_PENDING            ==> */      A_WARN,
            /* S_STOPPING           ==> */      A_WARN,
            /* S_TERMINATE          ==> */      A_WARN,
            /* S_TRANSITION_ENGINE  ==> */      A_WARN,
            /* S_HALT         ==> */      A_WARN,
      },
};

#endif

Generated by  Doxygen 1.6.0   Back to index