SaAisErrorT ntfsv_alloc_ntf_obj_create_del(SaNtfObjectCreateDeleteNotificationT *objCrDelNotification, SaUint16T numAttributes) { SaAisErrorT rc = SA_AIS_OK; objCrDelNotification->sourceIndicator = NULL; objCrDelNotification->objectAttributes = NULL; /* Source indicator */ objCrDelNotification->numAttributes = numAttributes; objCrDelNotification->sourceIndicator = malloc(sizeof(SaNtfSourceIndicatorT)); if (objCrDelNotification->sourceIndicator == NULL) { TRACE_1("Out of memory in sourceIndicator field"); rc = SA_AIS_ERR_NO_MEMORY; goto done; } *(objCrDelNotification->sourceIndicator) = SA_NTF_UNKNOWN_OPERATION; /* Object attributes */ if (numAttributes != 0) { objCrDelNotification->objectAttributes = (SaNtfAttributeT *) malloc(numAttributes * sizeof(SaNtfAttributeT)); if (objCrDelNotification->objectAttributes == NULL) { TRACE_1("Out of memory in objectAttributes field"); rc = SA_AIS_ERR_NO_MEMORY; goto done; } } done: if (rc != SA_AIS_OK) { ntfsv_free_obj_create_del(objCrDelNotification, false); } return rc; }
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(); }
/** * * @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; }