SaAisErrorT ntfsv_filter_alarm_alloc(SaNtfAlarmNotificationFilterT *filter, SaUint32T numProbableCauses, SaUint32T numPerceivedSeverities, SaUint32T numTrends) { SaAisErrorT rc = SA_AIS_OK; filter->probableCauses = NULL; filter->perceivedSeverities = NULL; filter->trends = NULL; filter->numProbableCauses = numProbableCauses; filter->numPerceivedSeverities = numPerceivedSeverities; filter->numTrends = numTrends; /* Probable causes */ 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; } } /* Percieved severities */ if (numPerceivedSeverities != 0) { filter->perceivedSeverities = (SaNtfSeverityT *) malloc(numPerceivedSeverities * sizeof(SaNtfSeverityT)); if (filter->perceivedSeverities == NULL) { TRACE_1("Out of memory in perceivedSeverities field"); rc = SA_AIS_ERR_NO_MEMORY; goto error_free; } } /* Severity trends */ if (numTrends != 0) { filter->trends = (SaNtfSeverityTrendT *) malloc(numTrends * sizeof(SaNtfSeverityTrendT)); if (filter->trends == NULL) { TRACE_1("Out of memory in trends field"); rc = SA_AIS_ERR_NO_MEMORY; goto error_free; } } done: return rc; error_free: ntfsv_filter_alarm_free(filter, false); goto done; }
/** * * @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); } }