FNRET(I_FAIL); 
return I_FAIL; 
do_announce(long long action,	    enum crmd_fsa_cause cause,	    enum crmd_fsa_state cur_state,	    enum crmd_fsa_input current_input,	    void *data){	xmlNodePtr msg = (xmlNodePtr)data;	FNIN();		/* Once we hear from the DC, we can stop the timer	 *	 * This timer was started either on startup or when a node	 * left the CCM list	 */	/* dont announce if we're in one of these states */	switch(cur_state) {		case S_RECOVERY:		case S_RECOVERY_DC:		case S_RELEASE_DC:		case S_TERMINATE:			crm_warn("Do not announce ourselves in state %s",				 fsa_state2string(cur_state));			FNRET(I_NULL);			break;		default:			break;	}	if(AM_I_OPERATIONAL) {		const char *from = xmlGetProp(msg, XML_ATTR_HOSTFROM);		if(from == NULL) {			crm_err("Failed to origin of ping message");			FNRET(I_FAIL);		}				send_request(NULL, NULL, CRM_OP_ANNOUNCE,			     from, CRM_SYSTEM_DC, NULL);	} else {		/* Delay announce until we have finished local startup */		crm_warn("Delaying announce until local startup is complete");		FNRET(I_NULL);	}		FNRET(I_NULL);}
8182	/local/tlutelli/issta_data/temp/c/2005_temp/2005/8182/e096a2906dea1664d64bb7bb2c0e2f5d325541e7/join.c/clean/crm/crmd/join.c