switch(fsa_data->fsa_cause) { case C_FSA_INTERNAL: case C_CRMD_STATUS_CALLBACK: case C_IPC_MESSAGE: case C_HA_MESSAGE: free_xml(fsa_data->data);
switch(fsa_data->data_type) { case fsa_dt_ha_msg: delete_ha_msg_input(fsa_data->data);
delete_fsa_input(fsa_data_t *fsa_data) {	lrm_op_t *op = NULL;	struct crmd_ccm_data_s *ccm_input = NULL;	if(fsa_data == NULL) {		return;	}	crm_trace("About to free %s data",		  fsa_cause2string(fsa_data->fsa_cause));		if(fsa_data->data != NULL) {		switch(fsa_data->fsa_cause) {			case C_FSA_INTERNAL:			case C_CRMD_STATUS_CALLBACK:			case C_IPC_MESSAGE:			case C_HA_MESSAGE:				free_xml(fsa_data->data);				break;							case C_LRM_OP_CALLBACK:				op = (lrm_op_t*)fsa_data->data;				crm_free(op->rsc->id);				crm_free(op->rsc->type);				crm_free(op->rsc->class);				crm_free(op->rsc->provider);				crm_free(op->rsc); 				crm_free(op->user_data);				crm_free(op->output);				crm_free(op->rsc_id);				crm_free(op->app_name);				crm_free(op);				break;							case C_CCM_CALLBACK:				ccm_input = (struct crmd_ccm_data_s *)					fsa_data->data;				crm_free(ccm_input->oc);				crm_free(ccm_input);				break;							case C_LRM_MONITOR_CALLBACK:			case C_TIMER_POPPED:			case C_SHUTDOWN:			case C_HEARTBEAT_FAILED:			case C_SUBSYSTEM_CONNECT:			case C_HA_DISCONNECT:			case C_ILLEGAL:			case C_UNKNOWN:			case C_STARTUP:				crm_err("Dont know how to free %s data from %s",					fsa_cause2string(fsa_data->fsa_cause),					fsa_data->where);				exit(1);				break;		}		crm_trace("%s data freed",			  fsa_cause2string(fsa_data->fsa_cause));	}	crm_free(fsa_data);}