/** * * @param instance */ void ntfa_filter_hdl_rec_destructor(ntfa_filter_hdl_rec_t *filter_rec) { switch (filter_rec->ntfType) { case SA_NTF_TYPE_OBJECT_CREATE_DELETE: ntfsv_filter_obj_cr_del_free(&filter_rec->notificationFilter.objectCreateDeleteNotificationfilter); break; case SA_NTF_TYPE_ATTRIBUTE_CHANGE: ntfsv_filter_attr_ch_free(&filter_rec->notificationFilter.attributeChangeNotificationfilter); break; case SA_NTF_TYPE_STATE_CHANGE: ntfsv_filter_state_ch_free(&filter_rec->notificationFilter.stateChangeNotificationfilter); break; case SA_NTF_TYPE_SECURITY_ALARM: ntfsv_filter_sec_alarm_free(&filter_rec->notificationFilter.securityAlarmNotificationfilter); break; case SA_NTF_TYPE_ALARM: ntfsv_filter_alarm_free(&filter_rec->notificationFilter.alarmNotificationfilter); break; default: assert(0); } }
SaAisErrorT ntfsv_filter_sec_alarm_alloc(SaNtfSecurityAlarmNotificationFilterT *filter, SaUint32T numProbableCauses, SaUint32T numSeverities, SaUint32T numSecurityAlarmDetectors, SaUint32T numServiceUsers, SaUint32T numServiceProviders) { SaAisErrorT rc = SA_AIS_OK; filter->probableCauses = NULL; filter->severities = NULL; filter->securityAlarmDetectors = NULL; filter->serviceUsers = NULL; filter->serviceProviders = NULL; filter->numProbableCauses = numProbableCauses; filter->numSeverities = numSeverities; filter->numSecurityAlarmDetectors = numSecurityAlarmDetectors; filter->numServiceUsers = numServiceUsers; filter->numServiceProviders = numServiceProviders; if (numProbableCauses != 0) { filter->probableCauses = (SaNtfProbableCauseT *) malloc(numProbableCauses * sizeof(SaNtfProbableCauseT)); if (filter->probableCauses == NULL) { TRACE_1("Out of memory in probableCauses field"); rc = SA_AIS_ERR_NO_MEMORY; goto error_free; } } if (numSeverities != 0) { filter->severities = (SaNtfSeverityT *) malloc(numSeverities * sizeof(SaNtfSeverityT)); if (filter->severities == NULL) { TRACE_1("Out of memory in perceivedSeverities field"); rc = SA_AIS_ERR_NO_MEMORY; goto error_free; } } if (numSecurityAlarmDetectors != 0) { filter->securityAlarmDetectors = (SaNtfSecurityAlarmDetectorT *) malloc(numSecurityAlarmDetectors * sizeof(SaNtfSecurityAlarmDetectorT)); if (filter->securityAlarmDetectors == NULL) { TRACE_1("Out of memory in securityAlarmDetector field"); rc = SA_AIS_ERR_NO_MEMORY; goto error_free; } } if (numServiceUsers != 0) { filter->serviceUsers = (SaNtfServiceUserT *) malloc(numServiceUsers * sizeof(SaNtfServiceUserT)); if (filter->serviceUsers == NULL) { TRACE_1("Out of memory in ServiceUsers field"); rc = SA_AIS_ERR_NO_MEMORY; goto error_free; } } if (numServiceProviders != 0) { filter->serviceProviders = (SaNtfServiceUserT *) malloc(numServiceProviders * sizeof(SaNtfServiceUserT)); if (filter->serviceProviders == NULL) { TRACE_1("Out of memory in ServiceProviders field"); rc = SA_AIS_ERR_NO_MEMORY; goto error_free; } } done: return rc; error_free: ntfsv_filter_sec_alarm_free(filter, false); goto done; }