tmp1 = create_node_state(node_id, XML_BOOLEAN_NO, NULL, CRMD_JOINSTATE_DOWN);
tmp1 = create_node_state( node_id, node_id, XML_BOOLEAN_NO, NULL, CRMD_JOINSTATE_DOWN);
do_send_welcome_all(long long action,		    enum crmd_fsa_cause cause,		    enum crmd_fsa_state cur_state,		    enum crmd_fsa_input current_input,		    void *data){		// reset everyones status back to down or in_ccm in the CIB	xmlNodePtr update     = NULL;	xmlNodePtr cib_copy   = get_cib_copy();	xmlNodePtr tmp1       = get_object_root(XML_CIB_TAG_STATUS, cib_copy);	xmlNodePtr node_entry = tmp1->children;	/* Give everyone a chance to join before invoking the PolicyEngine */	stopTimer(integration_timer);	startTimer(integration_timer);		if(joined_nodes != NULL) {		g_hash_table_destroy(joined_nodes);		joined_nodes = g_hash_table_new(&g_str_hash, &g_str_equal);			}	// catch any nodes that are active in the CIB but not in the CCM list 	while(node_entry != NULL){		const char *node_id = xmlGetProp(node_entry, XML_ATTR_ID);		gpointer a_node =			g_hash_table_lookup(fsa_membership_copy->members,					    node_id);		node_entry = node_entry->next;		if(a_node != NULL || (safe_str_eq(fsa_our_uname, node_id))) {			/* handled by do_update_cib_node() */			continue;		}		tmp1 = create_node_state(node_id, XML_BOOLEAN_NO, NULL, CRMD_JOINSTATE_DOWN);		if(update == NULL) {			update = tmp1;		} else {			update = xmlAddSibling(update, tmp1);		}	}	// now process the CCM data	free_xml(do_update_cib_nodes(update, TRUE));	free_xml(cib_copy);	/* Avoid ordered message delays caused when the CRMd proc	 * isnt running yet (ie. send as a broadcast msg which are never	 * sent ordered.	 */	send_request(NULL, NULL, CRM_OP_WELCOME,		     NULL, CRM_SYSTEM_CRMD, NULL);/* No point hanging around in S_INTEGRATION if we're the only ones here! */	if(g_hash_table_size(joined_nodes)	   == fsa_membership_copy->members_size) {		// that was the last outstanding join ack)		crm_info("That was the last outstanding join ack");		return I_SUCCESS;			} else {		crm_debug("Still waiting on %d outstanding join acks",			  fsa_membership_copy->members_size			  - g_hash_table_size(joined_nodes));		// dont waste time by invoking the pe yet;	}		return I_NULL;}