crm_debug_4("Activating temporary CIB");
cib_process_modify(	const char *op, int options, const char *section, crm_data_t *input,	crm_data_t *existing_cib, crm_data_t **result_cib, crm_data_t **answer){	gboolean verbose = FALSE;	crm_data_t *failed = NULL;	enum cib_errors result = cib_ok;	int cib_update_op = CIB_UPDATE_OP_NONE;	crm_debug_2("Processing \"%s\" event for section=%s", op, crm_str(section));	failed  = create_xml_node(NULL, XML_TAG_FAILED);	if (strcmp(CIB_OP_CREATE, op) == 0) {		cib_update_op = CIB_UPDATE_OP_ADD;			} else if (strcmp(CIB_OP_UPDATE, op) == 0) {		cib_update_op = CIB_UPDATE_OP_MODIFY;			} else if (strcmp(CIB_OP_DELETE, op) == 0) {		cib_update_op = CIB_UPDATE_OP_DELETE;			} else {		crm_err("Incorrect request handler invoked for \"%s\" op",			crm_str(op));		return cib_operation;	}	result = cib_ok;	if (options & cib_verbose) {		verbose = TRUE;	}		if(safe_str_eq(XML_CIB_TAG_SECTION_ALL, section)) {		section = NULL;	}	if(input == NULL) {		crm_err("Cannot perform modification with no data");		return cib_NOOBJECT;	}		*result_cib = copy_xml(existing_cib);		crm_validate_data(input);	crm_validate_data(*result_cib);		/* make changes to a temp copy then activate */	if(section == NULL) {		crm_data_t *sub_input = NULL;		copy_in_properties(*result_cib, input);		/* order is no longer important here */		if(result == cib_ok) {			sub_input = get_object_root(XML_CIB_TAG_NODES, input);			result = updateList(				*result_cib, sub_input, failed, cib_update_op,				XML_CIB_TAG_NODES);		}				if(result == cib_ok) {			sub_input = get_object_root(XML_CIB_TAG_NODES, input);			result = updateList(				*result_cib, sub_input, failed, cib_update_op,				XML_CIB_TAG_RESOURCES);		}		if(result == cib_ok) {			sub_input = get_object_root(XML_CIB_TAG_NODES, input);			result = updateList(				*result_cib, sub_input, failed, cib_update_op,				XML_CIB_TAG_CONSTRAINTS);		}		if(result == cib_ok) {			sub_input = get_object_root(XML_CIB_TAG_NODES, input);			result = updateList(				*result_cib, sub_input, failed, cib_update_op,				XML_CIB_TAG_STATUS);		}	} else {		result = updateList(			*result_cib, input, failed, cib_update_op, section);	}	crm_debug_4("Activating temporary CIB");	if(result == cib_ok && !(options & cib_inhibit_bcast)) {		cib_update_counter(*result_cib, XML_ATTR_NUMUPDATES, FALSE);	}		if (result != cib_ok || xml_has_children(failed)) {		if(result == cib_ok) {			result = cib_unknown;		}		crm_log_xml_err(failed, "CIB Update failures");	}	if (verbose || xml_has_children(failed) || result != cib_ok) {		*answer = createCibFragmentAnswer(section, failed);	}	free_xml(failed);	return result;}