void ntfsv_dealloc_notification(ntfsv_send_not_req_t *param) { TRACE_ENTER2("ntfsv_send_not_req_t ptr = %p " "notificationType = %#x", param, (int)param->notificationType); switch (param->notificationType) { case SA_NTF_TYPE_ALARM: ntfsv_free_alarm(¶m->notification.alarm, true); break; case SA_NTF_TYPE_OBJECT_CREATE_DELETE: ntfsv_free_obj_create_del(¶m->notification.objectCreateDelete, true); break; case SA_NTF_TYPE_ATTRIBUTE_CHANGE: ntfsv_free_attribute_change(¶m->notification.attributeChange, true); break; case SA_NTF_TYPE_STATE_CHANGE: ntfsv_free_state_change(¶m->notification.stateChange, true); break; case SA_NTF_TYPE_SECURITY_ALARM: ntfsv_free_security_alarm(¶m->notification.securityAlarm, true); break; default: TRACE("notificationType not valid"); } TRACE_1("free v_data.p_base %p", param->variable_data.p_base); free(param->variable_data.p_base); param->variable_data.p_base = NULL; param->variable_data.size = 0; TRACE_LEAVE(); }
SaAisErrorT ntfsv_alloc_ntf_security_alarm(SaNtfSecurityAlarmNotificationT *securityAlarm) { SaAisErrorT rc = SA_AIS_OK; securityAlarm->probableCause = NULL; securityAlarm->severity = NULL; securityAlarm->securityAlarmDetector = NULL; securityAlarm->serviceUser = NULL; securityAlarm->serviceProvider = NULL; /* Probable cause */ securityAlarm->probableCause = calloc(1, sizeof(SaNtfProbableCauseT)); if (securityAlarm->probableCause == NULL) { TRACE_1("Out of memory in probableCause field"); rc = SA_AIS_ERR_NO_MEMORY; goto done; } /* Severity */ securityAlarm->severity = calloc(1, sizeof(SaNtfSeverityT)); if (securityAlarm->severity == NULL) { TRACE_1("Out of memory in severity field"); rc = SA_AIS_ERR_NO_MEMORY; goto done; } /* Security alarm detector */ securityAlarm->securityAlarmDetector = calloc(1, sizeof(SaNtfSecurityAlarmDetectorT)); if (securityAlarm->securityAlarmDetector == NULL) { TRACE_1("Out of memory in securityAlarmDetector field"); rc = SA_AIS_ERR_NO_MEMORY; goto done; } /* Service user */ securityAlarm->serviceUser = calloc(1, sizeof(SaNtfServiceUserT)); if (securityAlarm->serviceUser == NULL) { TRACE_1("Out of memory in serviceUser field"); rc = SA_AIS_ERR_NO_MEMORY; goto done; } /* Service provider */ securityAlarm->serviceProvider = calloc(1, sizeof(SaNtfServiceUserT)); if (securityAlarm->serviceProvider == NULL) { TRACE_1("Out of memory in serviceProvider field"); rc = SA_AIS_ERR_NO_MEMORY; goto done; } done: if (rc != SA_AIS_OK) { ntfsv_free_security_alarm(securityAlarm, false); } return SA_AIS_OK; }
/** * * @param instance */ void ntfa_hdl_rec_destructor(ntfa_notification_hdl_rec_t *instance) { ntfa_notification_hdl_rec_t *notificationInstance = instance; switch (notificationInstance->ntfNotificationType) { case SA_NTF_TYPE_ALARM: ntfsv_free_alarm(¬ificationInstance->ntfNotification.ntfAlarmNotification); break; case SA_NTF_TYPE_STATE_CHANGE: ntfsv_free_state_change(¬ificationInstance->ntfNotification.ntfStateChangeNotification); break; case SA_NTF_TYPE_OBJECT_CREATE_DELETE: ntfsv_free_obj_create_del(¬ificationInstance->ntfNotification.ntfObjectCreateDeleteNotification); break; case SA_NTF_TYPE_ATTRIBUTE_CHANGE: ntfsv_free_attribute_change(¬ificationInstance->ntfNotification.ntfAttributeChangeNotification); break; case SA_NTF_TYPE_SECURITY_ALARM: ntfsv_free_security_alarm(¬ificationInstance->ntfNotification.ntfSecurityAlarmNotification); break; default: TRACE("Invalid Notification Type!"); break; } if (NULL != notificationInstance->cbk_notification) { free(notificationInstance->cbk_notification); } TRACE_1("free v_data.p_base %p", notificationInstance->variable_data.p_base); free(notificationInstance->variable_data.p_base); notificationInstance->variable_data.p_base = NULL; notificationInstance->variable_data.size = 0; }