xmlNodePtr options  = find_xml_node(msg_copy, XML_TAG_OPTIONS);
xmlNodePtr options  = find_xml_node( msg_copy, XML_TAG_OPTIONS, TRUE);
do_cib_invoke(long long action,	      enum crmd_fsa_cause cause,	      enum crmd_fsa_state cur_state,	      enum crmd_fsa_input current_input,	      fsa_data_t *msg_data){	xmlNodePtr cib_msg = NULL;	xmlNodePtr answer = NULL;	enum crmd_fsa_input result = I_NULL;		if(msg_data->data != NULL) {		cib_msg = (xmlNodePtr)msg_data->data;	}			if(action & A_CIB_INVOKE || action & A_CIB_INVOKE_LOCAL) {		enum cib_errors rc  = cib_ok;		xmlNodePtr cib_frag  = NULL;		xmlNodePtr msg_copy = copy_xml_node_recursive(cib_msg);		xmlNodePtr options  = find_xml_node(msg_copy, XML_TAG_OPTIONS);				const char *sys_from = xmlGetProp(msg_copy, XML_ATTR_SYSFROM);		const char *type     = xmlGetProp(options, XML_ATTR_MSGTYPE);		const char *op       = xmlGetProp(options, XML_ATTR_OP);				cib_t *cib = NULL;				crm_xml_devel(msg_copy, "[CIB update]");		if(cib_msg == NULL) {			crm_err("No message for CIB command");			return I_NULL; /* I_ERROR */					} else if(op == NULL) {			crm_xml_devel(msg_copy, "Invalid CIB Message");			return I_NULL; /* I_ERROR */					}				crm_debug("is dc? %d, type=%s", AM_I_DC, type);		rc = cib->cmds->variant_op(			cib, op, NULL, NULL, NULL, &cib_frag,			cib_scope_local|cib_sync_call);				answer = create_reply(cib_msg, cib_frag);		set_xml_attr(answer, XML_TAG_OPTIONS,			     XML_ATTR_RESULT, cib_error2string(rc), TRUE);				if(AM_I_DC == FALSE) {			if(relay_message(answer, TRUE) == FALSE) {				crm_err("Confused what to do with cib result");				crm_xml_devel(answer, "Couldnt route: ");				result = I_ERROR;			}		}				/* the TENGINE will get CC'd by other means. */		if(AM_I_DC		   && sys_from != NULL		   && safe_str_neq(sys_from, CRM_SYSTEM_CRMD)		   && safe_str_neq(sys_from, CRM_SYSTEM_DC)		   && relay_message(answer, TRUE) == FALSE) {			crm_err("Confused what to do with cib result");			crm_xml_devel(answer, "Couldnt route: ");			result = I_ERROR;		}				return result;	} else {		crm_err("Unexpected action %s in %s",			fsa_action2string(action), __FUNCTION__);	}		return I_NULL;}