update = create_node_state(node, node, NULL, status, join); 
update = create_node_state(node, node, NULL, status, join, NULL); 
crmd_client_status_callback(const char * node, const char * client,		 const char * status, void * private){	const char    *join = NULL;	const char   *extra = NULL;	xmlNodePtr   update = NULL;	xmlNodePtr fragment = NULL;	xmlNodePtr msg_options = NULL;	xmlNodePtr request = NULL;	set_bit_inplace(fsa_input_register, R_PEER_DATA);		if(safe_str_eq(status, JOINSTATUS)){		status = ONLINESTATUS;		extra  = XML_CIB_ATTR_CLEAR_SHUTDOWN;	} else if(safe_str_eq(status, LEAVESTATUS)){		status = OFFLINESTATUS;		join   = CRMD_JOINSTATE_DOWN;		extra  = XML_CIB_ATTR_CLEAR_SHUTDOWN;	}		crm_notice("Status update: Client %s/%s now has status [%s]\n",		   node, client, status);	if(AM_I_DC == FALSE) {		crm_debug("Got client status callback in non-DC mode");	} else {		update = create_node_state(node, node, NULL, status, join);		set_xml_property_copy(update, extra, XML_BOOLEAN_TRUE);				fragment = create_cib_fragment(update, NULL);		msg_options = set_xml_attr(			NULL, XML_TAG_OPTIONS, XML_ATTR_OP, CRM_OP_UPDATE, TRUE);				request = create_request(			msg_options, fragment, NULL,			CRM_SYSTEM_DCIB, CRM_SYSTEM_DC, NULL, NULL);		crm_xml_debug(fragment, "Client status update");				free_xml(fragment);		free_xml(update);		register_fsa_input(C_CRMD_STATUS_CALLBACK, I_CIB_OP, request);		s_crmd_fsa(C_CRMD_STATUS_CALLBACK);	}}
8182	/local/tlutelli/issta_data/temp/c/2005_temp/2005/8182/c82591b18b7eab9fe8cea95eada57fa770e61328/callbacks.c/clean/crm/crmd/callbacks.c