if (dc_mode) { CRM_DEBUG("Processing DC specific actions");  if (strcmp("cib_op", op) == 0)
if (dc_mode)
crm_dc_process_message(xmlNodePtr whole_message, xmlNodePtr action,		       const char *host_from, const char *sys_from, const char *sys_to,		       const char *op, gboolean dc_mode){    FNIN();    gboolean processing_complete = FALSE;    xmlNodePtr wrapper = NULL, ping = NULL;        if (dc_mode)    {	CRM_DEBUG("Processing DC specific actions");	    	// DC specific actions	if (strcmp("cib_op", op) == 0)	{	    xmlNodePtr cib_req = find_xml_node(action, XML_REQ_TAG_CIB);	    	    wrapper = create_forward(whole_message, cib_req, "cib");	    relay_message(wrapper, TRUE, host_from);	    processing_complete = TRUE;	    free_xml(wrapper);	}		CRM_DEBUG("Finished processing DC specific actions");    }        if (processing_complete == FALSE)    {	CRM_DEBUG("Processing common DC/CRMd actions");		xmlNodePtr response = NULL;	if (strcmp("ping", op) == 0)	{	    // eventually do some stuff to figure out if we *are* ok	    ping = createPingAnswerFragment(sys_to, "ok");	    if (dc_mode) response = create_xml_node(NULL, XML_RESP_TAG_DC);	    else response = create_xml_node(NULL, XML_RESP_TAG_CRM);	    xmlAddChild(response, ping);	    	    wrapper = create_reply(whole_message, response);	    relay_message(wrapper, TRUE, host_from);	    processing_complete = TRUE;	    free_xml(wrapper);	}	else if (strcmp("ping_deep", op) == 0)	{	    // eventually do some stuff to figure out if we *are* ok	    ping = createPingAnswerFragment(sys_to, "ok");	    if (dc_mode) response = create_xml_node(NULL, XML_RESP_TAG_DC);	    else response = create_xml_node(NULL, XML_RESP_TAG_CRM);	    xmlAddChild(response, ping);	    	    wrapper = create_reply(whole_message, response);	    relay_message(wrapper, TRUE, host_from);	    free_xml(wrapper);	    /* Now pass the ping request on to all subsystems for them	     *  to reply to individually.	     *	     * Basically this means we are pushing the complexity back	     *  on to the client.  Therefore it is the client that must	     *  decide, based on the results it recieves, if all	     *  subsystems are alive.	     *	     * ... Unless we choose another method, other than IPC 	     *  message/response, of pinging locally.	     */	    wrapper = create_forward(whole_message, action, CRM_SYSTEM_CIB);	    relay_message(wrapper, TRUE, host_from);	    unlink_xml_node(action);	    free_xml(wrapper);	    wrapper = create_forward(whole_message, action, CRM_SYSTEM_LRMD);	    relay_message(wrapper, TRUE, host_from);	    unlink_xml_node(action);	    free_xml(wrapper);	    wrapper = create_forward(whole_message, action, CRM_SYSTEM_PENGINE);	    relay_message(wrapper, TRUE, host_from);	    unlink_xml_node(action);	    free_xml(wrapper);	    wrapper = create_forward(whole_message, action, CRM_SYSTEM_TENGINE);	    relay_message(wrapper, TRUE, host_from);	    unlink_xml_node(action);	    free_xml(wrapper);	    processing_complete = TRUE;	}	// else we dont know anything about it	else	{	    cl_log(LOG_ERR, "The specified operation (%s) is not (yet?) supported\n", op);	}		CRM_DEBUG("Finished processing common DC/CRMd actions");    }    FNRET(processing_complete);}