FNRET(TRUE);
CRM_DEBUG("Created request wrapper..."); xml_message_debug(xmlDocGetRootElement(doc));  if(xml_msg_node != NULL) { xmlUnlinkNode(xml_msg_node); xmlAddChild(xml_node, xml_msg_node); }  was_sent = send_xmlipc_message(ipc_channel, xmlDocGetRootElement(doc));   if(xml_msg_node != NULL) xmlUnlinkNode(xml_msg_node); free_xml(xml_node);  FNRET(was_sent);
send_ipc_request(IPC_Channel *ipc_channel, xmlNodePtr xml_msg_node,		 const char *host_to, const char *sys_to,		 const char *sys_from, const char *uid_from,		 const char *reference){    FNIN();    // only internal systems can leave uid_from blank    const char *true_from = sys_from;    if(uid_from != NULL)	true_from = generate_hash_key(sys_from, uid_from);    // else make sure we are internal    else    {    	if(strcmp(CRM_SYSTEM_LRMD, sys_from) != 0	   && strcmp(CRM_SYSTEM_PENGINE, sys_from) != 0	   && strcmp(CRM_SYSTEM_TENGINE, sys_from) != 0	   && strcmp(CRM_SYSTEM_DC, sys_from) != 0	   && strcmp(CRM_SYSTEM_CRMD, sys_from) != 0)	{	    cl_log(LOG_ERR, "only internal systems can leave uid_from blank");	    FNRET(FALSE);	}    }    if(reference == NULL)	reference = generateReference();        // host_from will get set for us if necessary by CRMd when routed    xmlNodePtr reply = createCrmMsg(xml_msg_node, TRUE);        xmlSetProp(reply, XML_MSG_ATTR_REFERENCE, reference);    xmlSetProp(reply, XML_MSG_ATTR_HOSTTO,    host_to);    xmlSetProp(reply, XML_MSG_ATTR_SYSTO,     sys_to);//    xmlSetProp(reply, XML_MSG_ATTR_SYSFROM,   sys_from);    xmlSetProp(reply, XML_MSG_ATTR_SYSFROM,   true_from);    send_xmlipc_message(ipc_channel, reply);    FNRET(TRUE);}