- //realloc ?
- if (ref_notadmitted_action_array->size() >= ie_not_admitted_list_size){
- RICaction_NotAdmitted_ItemIEs_t * new_ref = 0;
- ie_not_admitted_list_size = 2 * ref_notadmitted_action_array->size();
- new_ref = (RICaction_NotAdmitted_ItemIEs_t *) realloc(ie_not_admitted_list, ie_not_admitted_list_size * sizeof(RICaction_NotAdmitted_ItemIEs_t));
- assert(new_ref != 0);
- ie_not_admitted_list = new_ref;
- };
-
-
- // reset the list count
- ric_not_admitted_actions_ie->list.count = 0;
- for(int i = 0; i < ref_notadmitted_action_array->size(); i ++){
- ie_not_admitted_list[i].criticality = Criticality_ignore;
- ie_not_admitted_list[i].id = ProtocolIE_ID_id_RICaction_NotAdmitted_Item ;
- ie_not_admitted_list[i].value.present = RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item;;
- ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricActionID = (*ref_notadmitted_action_array)[i].get_id();
-
- int cause = (*ref_notadmitted_action_array)[i].get_cause();
- switch(cause){
- case RICcause_PR_radioNetwork:
- ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.radioNetwork = (*ref_notadmitted_action_array)[i].get_sub_cause();
- break;
- case RICcause_PR_transport:
- ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.transport = (*ref_notadmitted_action_array)[i].get_sub_cause();
- break;
- case RICcause_PR_protocol:
- ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.protocol= (*ref_notadmitted_action_array)[i].get_sub_cause();
- break;
- case RICcause_PR_misc:
- ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.misc = (*ref_notadmitted_action_array)[i].get_sub_cause();
- break;
- case RICcause_PR_ric:
- ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.ric = (*ref_notadmitted_action_array)[i].get_sub_cause();
- break;
- default:
- std::cout <<"Error ! Illegal cause enum" << cause << std::endl;
- return;
+ if (ref_notadmitted_action_array->size() > 0){
+
+ E2N_RICsubscriptionResponse_IEs_t *ies_notadmitted_actid = &IE_array[ie_index];
+ ies_notadmitted_actid->criticality = E2N_Criticality_reject;
+ ies_notadmitted_actid->id = E2N_ProtocolIE_ID_id_RICactions_NotAdmitted;
+
+ E2N_RICaction_NotAdmitted_List_t *ric_not_admitted_actions_ie = &ies_notadmitted_actid->value.choice.RICaction_NotAdmitted_List;
+ ric_not_admitted_actions_ie->list.count = 0;
+
+
+ ies_notadmitted_actid->value.present = E2N_RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List;
+
+ // resize memory ?
+ if (ref_notadmitted_action_array->size() >= ie_not_admitted_list_size){
+ ie_not_admitted_list_size = 2 * ref_notadmitted_action_array->size();
+ free(ie_not_admitted_list);
+ ie_not_admitted_list = (E2N_RICaction_NotAdmitted_ItemIEs_t *)calloc(ie_not_admitted_list_size, sizeof(E2N_RICaction_NotAdmitted_ItemIEs_t));
+ assert(ie_not_admitted_list != 0);
+
+ };
+
+
+ for(unsigned int i = 0; i < ref_notadmitted_action_array->size(); i ++){
+ ie_not_admitted_list[i].criticality = E2N_Criticality_ignore;
+ ie_not_admitted_list[i].id = E2N_ProtocolIE_ID_id_RICaction_NotAdmitted_Item ;
+ ie_not_admitted_list[i].value.present = E2N_RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item;;
+ ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricActionID = (*ref_notadmitted_action_array)[i].get_id();
+
+ int cause = (*ref_notadmitted_action_array)[i].get_cause();
+ switch(cause){
+ case E2N_RICcause_PR_radioNetwork:
+ ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.radioNetwork = (*ref_notadmitted_action_array)[i].get_sub_cause();
+ break;
+ case E2N_RICcause_PR_transport:
+ ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.transport = (*ref_notadmitted_action_array)[i].get_sub_cause();
+ break;
+ case E2N_RICcause_PR_protocol:
+ ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.protocol= (*ref_notadmitted_action_array)[i].get_sub_cause();
+ break;
+ case E2N_RICcause_PR_misc:
+ ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.misc = (*ref_notadmitted_action_array)[i].get_sub_cause();
+ break;
+ case E2N_RICcause_PR_ric:
+ ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.ric = (*ref_notadmitted_action_array)[i].get_sub_cause();
+ break;
+ default:
+ mdclog_write(MDCLOG_ERR, "Error :: %s, %d : Unknown RIC cause %d\n", __FILE__, __LINE__, cause);
+ return;
+ }
+
+ ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.present = (E2N_RICcause_PR)cause;
+ ASN_SEQUENCE_ADD(ric_not_admitted_actions_ie, &(ie_not_admitted_list[i]));