hb_fd->llc_ops->sendclustermsg(hb_fd, msg);
hb_fd->llc_ops->send_ordered_clustermsg(hb_fd, msg);
send_xmlha_message(ll_cluster_t *hb_fd, xmlNodePtr root){	gboolean broadcast = FALSE;	gboolean all_is_good = TRUE;	int send_result = -1;	int xml_len = -1;	const char *host_to = NULL;	const char *sys_to = NULL;	FNIN();    	if (root == NULL) {		cl_log(LOG_ERR, "Attempt to send NULL Message via HA failed.");		all_is_good = FALSE;	}	host_to = xmlGetProp(root, XML_ATTR_HOSTTO);	sys_to = xmlGetProp(root, XML_ATTR_SYSTO);		if (sys_to != NULL && strcmp("dc", sys_to) == 0) {		cl_log(LOG_INFO,		       "Resetting the value of %s to null from %s",		       XML_ATTR_HOSTTO, host_to);//		xmlSetProp(root, XML_ATTR_HOSTTO, "");	}		struct ha_msg *msg = NULL;	if (all_is_good) {		msg = ha_msg_new(4); 		ha_msg_add(msg, F_TYPE, "CRM");		ha_msg_add(msg, F_COMMENT, "A CRM xml message");		char *xml_text = dump_xml(root);		xml_len = strlen(xml_text);				if (xml_text == NULL || xml_len <= 0) {			cl_log(LOG_ERR,			       "Failed sending an invalid XML Message via HA");			all_is_good = FALSE;			xml_message_debug(root, "Bad message was");					} else {			if(ha_msg_add(msg, "xml", xml_text) == HA_FAIL) {				cl_log(LOG_ERR,				       "Could not add xml to HA message");				all_is_good = FALSE;			}		}	}	if (all_is_good) {		if (sys_to == NULL || strlen(sys_to) == 0)		{			cl_log(LOG_ERR,			       "You did not specify a destination sub-system"			       " for this message.");			all_is_good = FALSE;		}	}	if (all_is_good) {		if (host_to == NULL		    || strlen(host_to) == 0		    || strcmp("dc", sys_to) == 0) {			broadcast = TRUE;			send_result =				hb_fd->llc_ops->sendclustermsg(hb_fd, msg);		}		else			send_result =				hb_fd->llc_ops->sendnodemsg(hb_fd, msg, host_to);		if(send_result != HA_OK) all_is_good = FALSE;			}	if(!all_is_good) {		cl_log(LOG_ERR,		       "Sending %s HA message (ref=%s, len=%d) to %s@%s %s.",		       broadcast?"broadcast":"directed",		       xmlGetProp(root, XML_ATTR_REFERENCE), xml_len,		       sys_to, host_to==NULL?"<all>":host_to,		       all_is_good?"succeeded":"failed");	} else {		xmlNodePtr opts = find_xml_node(root, XML_TAG_OPTIONS);		const char *op = xmlGetProp(opts, XML_ATTR_OP);		if(op == NULL || strcmp(op, CRM_OPERATION_HBEAT) != 0) {			cl_log(LOG_DEBUG,			       "Sent %s HA message (ref=%s, len=%d) to %s@%s",			       broadcast?"broadcast":"directed",			       xmlGetProp(root, XML_ATTR_REFERENCE), xml_len,			       sys_to, host_to==NULL?"<all>":host_to);		}	}		#ifdef MSG_LOG			char *msg_text = dump_xml(root);		if(msg_out_strm == NULL) {			msg_out_strm = fopen("/tmp/outbound.log", "w");		}		fprintf(msg_out_strm, "[%d HA (%s:%d)]\t%s\n",			all_is_good,			xmlGetProp(root, XML_ATTR_REFERENCE),			send_result,			msg_text);				fflush(msg_out_strm);		cl_free(msg_text);	#endif		FNRET(all_is_good);}