1. Transitioned to using latest asn1c compiler
[ric-app/admin.git] / src / X2AP / sgnb_addition_response.cc
index d64f620..e1c6c5c 100644 (file)
@@ -28,60 +28,50 @@ sgnb_addition_response::sgnb_addition_response(void ) {
   
 
   x2ap_pdu_obj = 0;
-  x2ap_pdu_obj = (X2AP_PDU_t * )calloc(1, sizeof(X2AP_PDU_t));
+  x2ap_pdu_obj = (X2N_X2AP_PDU_t * )calloc(1, sizeof(X2N_X2AP_PDU_t));
   assert(x2ap_pdu_obj != 0);
 
   successMsg = 0;
-  successMsg = (X2SuccessfulOutcome_t * )calloc(1, sizeof(X2SuccessfulOutcome_t));
+  successMsg = (X2N_SuccessfulOutcome_t * )calloc(1, sizeof(X2N_SuccessfulOutcome_t));
   assert(successMsg != 0);
 
   unsuccessMsg = 0;
-  unsuccessMsg = (X2UnsuccessfulOutcome_t * )calloc(1, sizeof(X2UnsuccessfulOutcome_t));
+  unsuccessMsg = (X2N_UnsuccessfulOutcome_t * )calloc(1, sizeof(X2N_UnsuccessfulOutcome_t));
   assert(unsuccessMsg != 0);
 
   IE_array = 0;
-  IE_array = (SgNBAdditionRequestAcknowledge_IEs_t *)calloc(NUM_SGNB_ADDITION_RESPONSE_ACKNOWLEDGE_IES, sizeof(SgNBAdditionRequestAcknowledge_IEs_t));
+  IE_array = (X2N_SgNBAdditionRequestAcknowledge_IEs_t *)calloc(NUM_SGNB_ADDITION_RESPONSE_ACKNOWLEDGE_IES, sizeof(X2N_SgNBAdditionRequestAcknowledge_IEs_t));
   assert(IE_array != 0);
 
   IE_reject_array = 0;
-  IE_reject_array = (SgNBAdditionRequestReject_IEs_t *)calloc(NUM_SGNB_ADDITION_RESPONSE_FAILURE_IES, sizeof(SgNBAdditionRequestReject_IEs_t));
+  IE_reject_array = (X2N_SgNBAdditionRequestReject_IEs_t *)calloc(NUM_SGNB_ADDITION_RESPONSE_FAILURE_IES, sizeof(X2N_SgNBAdditionRequestReject_IEs_t));
   assert(IE_reject_array != 0);
   
   
   erab_admit_array = 0;
-  erab_admit_array = (E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_t * ) calloc(INITIAL_SIZE, sizeof(E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_t));
+  erab_admit_array = (X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_t * ) calloc(INITIAL_SIZE, sizeof(X2N_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_t));
   assert(erab_admit_array != 0);
   erab_admit_array_size = INITIAL_SIZE;
 
 
   erab_sgnb_present_array = 0;
-  erab_sgnb_present_array = (E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_t *) calloc(INITIAL_SIZE, sizeof(E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_t));
+  erab_sgnb_present_array = (X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_t *) calloc(INITIAL_SIZE, sizeof(X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_t));
   assert(erab_sgnb_present_array != 0);
   erab_sgnb_present_array_size = INITIAL_SIZE;
   
   erab_sgnb_notpresent_array = 0;
-  erab_sgnb_notpresent_array = (E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_t *) calloc(INITIAL_SIZE, sizeof(E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_t));
+  erab_sgnb_notpresent_array = (X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_t *) calloc(INITIAL_SIZE, sizeof(X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_t));
   assert(erab_sgnb_notpresent_array != 0);
-  erab_sgnb_notpresent_array_size = INITIAL_SIZE;
-
-  SgNBAdditionRequestAcknowledge_t * sgnb_ack = &(successMsg->value.choice.SgNBAdditionRequestAcknowledge);
-  for(int i = 0; i < NUM_SGNB_ADDITION_RESPONSE_ACKNOWLEDGE_IES; i++){
-    ASN_SEQUENCE_ADD(&(sgnb_ack->protocolIEs), &(IE_array[i]));
-  }
+  erab_sgnb_notpresent_array_size = INITIAL_SIZE;  
   
-  
-  SgNBAdditionRequestReject_t * sgnb_reject = &(unsuccessMsg->value.choice.SgNBAdditionRequestReject);
-  for(int i = 0; i < NUM_SGNB_ADDITION_RESPONSE_FAILURE_IES; i++){
-    ASN_SEQUENCE_ADD(&(sgnb_reject->protocolIEs), &(IE_reject_array[i]));
-  }
 
 }
 
 sgnb_addition_response::~sgnb_addition_response(void){
 
-  mdclog_write(MDCLOG_INFO, "Freeing X2AP SgNB Addition Response object memory");
+  mdclog_write(MDCLOG_DEBUG, "Freeing X2AP SgNB Addition Response object memory");
 
-  E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_t  * erabs_toadd_list = &(IE_array[3].value.choice.E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList);
+  X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_t  * erabs_toadd_list = &(IE_array[3].value.choice.E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList);
   for(int i = 0; i < erabs_toadd_list->list.size; i++){
     erabs_toadd_list->list.array[i] = 0;
   }
@@ -96,7 +86,7 @@ sgnb_addition_response::~sgnb_addition_response(void){
   free(erab_sgnb_notpresent_array);
   free(erab_admit_array);
 
-  SgNBAdditionRequestAcknowledge_t *sgnb_ack  = &(successMsg->value.choice.SgNBAdditionRequestAcknowledge);
+  X2N_SgNBAdditionRequestAcknowledge_t *sgnb_ack  = &(successMsg->value.choice.SgNBAdditionRequestAcknowledge);
   for(int i = 0; i < sgnb_ack->protocolIEs.list.size; i++){
     sgnb_ack->protocolIEs.list.array[i] = 0;
   }
@@ -107,7 +97,7 @@ sgnb_addition_response::~sgnb_addition_response(void){
     sgnb_ack->protocolIEs.list.size = 0;
   }
   
-  SgNBAdditionRequestReject_t *sgnb_reject  = &(unsuccessMsg->value.choice.SgNBAdditionRequestReject);
+  X2N_SgNBAdditionRequestReject_t *sgnb_reject  = &(unsuccessMsg->value.choice.SgNBAdditionRequestReject);
    for(int i = 0; i < sgnb_reject->protocolIEs.list.size; i++){
      sgnb_reject->protocolIEs.list.array[i] = 0;
    }
@@ -125,14 +115,14 @@ sgnb_addition_response::~sgnb_addition_response(void){
   free(unsuccessMsg);
 
   x2ap_pdu_obj->choice.initiatingMessage = NULL;
-  x2ap_pdu_obj->present = X2AP_PDU_PR_NOTHING;
+  x2ap_pdu_obj->present = X2N_X2AP_PDU_PR_NOTHING;
   
-  ASN_STRUCT_FREE(asn_DEF_X2AP_PDU, x2ap_pdu_obj);
+  ASN_STRUCT_FREE(asn_DEF_X2N_X2AP_PDU, x2ap_pdu_obj);
 
-  mdclog_write(MDCLOG_INFO, "Freed X2AP SgNB Addition Response object memory");
+  mdclog_write(MDCLOG_DEBUG, "Freed X2AP X2_SgNB Addition Response object memory");
 }
 
-bool sgnb_addition_response::set_fields(X2UnsuccessfulOutcome_t * unsuccessMsg, sgnb_addition_helper &sgnb_data){
+bool sgnb_addition_response::set_fields(X2N_UnsuccessfulOutcome_t * unsuccessMsg, sgnb_addition_helper &sgnb_data){
   
   unsigned ie_index = 0;
 
@@ -140,61 +130,68 @@ bool sgnb_addition_response::set_fields(X2UnsuccessfulOutcome_t * unsuccessMsg,
     error_string = "Invalid reference for X2AP Sgnb Addition Reject message in set_fields";
     return false;
   }
-  SgNBAdditionRequestReject_IEs_t *ies_sgnb_add_reject;
 
+  X2N_SgNBAdditionRequestReject_t * sgnb_reject = &(unsuccessMsg->value.choice.SgNBAdditionRequestReject);
+  X2N_SgNBAdditionRequestReject_IEs_t *ies_sgnb_add_reject;
+  sgnb_reject->protocolIEs.list.count = 0;
+  
   ie_index = 0;
   ies_sgnb_add_reject= &IE_reject_array[ie_index];
-  ies_sgnb_add_reject->criticality = Criticality_reject;
-  ies_sgnb_add_reject->id = ProtocolIE_ID_id_MeNB_UE_X2AP_ID;
-  ies_sgnb_add_reject->value.present = SgNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID;
+  ies_sgnb_add_reject->criticality = X2N_Criticality_reject;
+  ies_sgnb_add_reject->id = X2N_ProtocolIE_ID_id_MeNB_UE_X2AP_ID;
+  ies_sgnb_add_reject->value.present = X2N_SgNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID;
   ies_sgnb_add_reject->value.choice.UE_X2AP_ID = sgnb_data.menb_ue_x2ap_id;
-
+  ASN_SEQUENCE_ADD(&(sgnb_reject->protocolIEs), &(IE_reject_array[ie_index]));
+    
 
   ie_index = 1;
   ies_sgnb_add_reject= &IE_reject_array[ie_index];
-  ies_sgnb_add_reject->criticality = Criticality_reject;
-  ies_sgnb_add_reject->id = ProtocolIE_ID_id_SgNB_UE_X2AP_ID;
-  ies_sgnb_add_reject->value.present = SgNBAdditionRequestReject_IEs__value_PR_SgNB_UE_X2AP_ID;
+  ies_sgnb_add_reject->criticality = X2N_Criticality_reject;
+  ies_sgnb_add_reject->id = X2N_ProtocolIE_ID_id_SgNB_UE_X2AP_ID;
+  ies_sgnb_add_reject->value.present = X2N_SgNBAdditionRequestReject_IEs__value_PR_SgNB_UE_X2AP_ID;
   ies_sgnb_add_reject->value.choice.SgNB_UE_X2AP_ID = sgnb_data.sgnb_ue_x2ap_id;
+  ASN_SEQUENCE_ADD(&(sgnb_reject->protocolIEs), &(IE_reject_array[ie_index]));
 
-
+  
   ie_index = 2;
   ies_sgnb_add_reject= &IE_reject_array[ie_index];
-  ies_sgnb_add_reject->criticality = Criticality_reject;
-  ies_sgnb_add_reject->id = ProtocolIE_ID_id_Cause;
-  ies_sgnb_add_reject->value.present = SgNBAdditionRequestReject_IEs__value_PR_Cause;
-  Cause_t *caus = &ies_sgnb_add_reject->value.choice.Cause;
+  ies_sgnb_add_reject->criticality = X2N_Criticality_reject;
+  ies_sgnb_add_reject->id = X2N_ProtocolIE_ID_id_Cause;
+  ies_sgnb_add_reject->value.present = X2N_SgNBAdditionRequestReject_IEs__value_PR_Cause;
+  X2N_Cause_t *caus = &ies_sgnb_add_reject->value.choice.Cause;
 
   switch(sgnb_data.cause)
     {
-    case Cause_PR_misc: //Misc
-      caus->present = Cause_PR_misc;
+    case X2N_Cause_PR_misc: //Misc
+      caus->present = X2N_Cause_PR_misc;
       caus->choice.misc = sgnb_data.cause_desc;
       break;
-    case Cause_PR_radioNetwork: //radio network
-      caus->present = Cause_PR_radioNetwork;
+    case X2N_Cause_PR_radioNetwork: //radio network
+      caus->present = X2N_Cause_PR_radioNetwork;
       caus->choice.radioNetwork = sgnb_data.cause_desc;
       break;
-    case Cause_PR_protocol : //protocol
-      caus->present = Cause_PR_protocol;
+    case X2N_Cause_PR_protocol : //protocol
+      caus->present = X2N_Cause_PR_protocol;
       caus->choice.protocol = sgnb_data.cause_desc;
       break;
-    case Cause_PR_transport: //transport
-      caus->present = Cause_PR_transport;
+    case X2N_Cause_PR_transport: //transport
+      caus->present = X2N_Cause_PR_transport;
       caus->choice.transport = sgnb_data.cause_desc;
       break;
       
     default:
-      caus->present = Cause_PR_NOTHING;
+      caus->present = X2N_Cause_PR_NOTHING;
       break;
     }
 
+  ASN_SEQUENCE_ADD(&(sgnb_reject->protocolIEs), &(IE_reject_array[ie_index]));
+  
   return true;
 
 }
 
 
-bool sgnb_addition_response::set_fields(X2SuccessfulOutcome_t * successMsg, sgnb_addition_helper &sgnb_data){
+bool sgnb_addition_response::set_fields(X2N_SuccessfulOutcome_t * successMsg, sgnb_addition_helper &sgnb_data){
 
   unsigned ie_index = 0;
 
@@ -203,172 +200,181 @@ bool sgnb_addition_response::set_fields(X2SuccessfulOutcome_t * successMsg, sgnb
     return false;
   }
 
-  SgNBAdditionRequestAcknowledge_IEs_t *ies_sgnb_add_ack;
+  X2N_SgNBAdditionRequestAcknowledge_t * sgnb_ack = &(successMsg->value.choice.SgNBAdditionRequestAcknowledge);
+  sgnb_ack->protocolIEs.list.count = 0;
+  
+  X2N_SgNBAdditionRequestAcknowledge_IEs_t *ies_sgnb_add_ack;
 
   ie_index = 0;
   ies_sgnb_add_ack= &IE_array[ie_index];
-  ies_sgnb_add_ack->criticality = Criticality_reject;
-  ies_sgnb_add_ack->id = ProtocolIE_ID_id_MeNB_UE_X2AP_ID;
-  ies_sgnb_add_ack->value.present = SgNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID;
+  ies_sgnb_add_ack->criticality = X2N_Criticality_reject;
+  ies_sgnb_add_ack->id = X2N_ProtocolIE_ID_id_MeNB_UE_X2AP_ID;
+  ies_sgnb_add_ack->value.present = X2N_SgNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID;
   ies_sgnb_add_ack->value.choice.UE_X2AP_ID = sgnb_data.menb_ue_x2ap_id;
+  ASN_SEQUENCE_ADD(&(sgnb_ack->protocolIEs), &(IE_array[ie_index]));
 
   
   ie_index = 1;
   ies_sgnb_add_ack= &IE_array[ie_index];
-  ies_sgnb_add_ack->criticality = Criticality_reject;
-  ies_sgnb_add_ack->id = ProtocolIE_ID_id_SgNB_UE_X2AP_ID;
-  ies_sgnb_add_ack->value.present = SgNBAdditionRequestAcknowledge_IEs__value_PR_SgNB_UE_X2AP_ID;
+  ies_sgnb_add_ack->criticality = X2N_Criticality_reject;
+  ies_sgnb_add_ack->id = X2N_ProtocolIE_ID_id_SgNB_UE_X2AP_ID;
+  ies_sgnb_add_ack->value.present = X2N_SgNBAdditionRequestAcknowledge_IEs__value_PR_SgNB_UE_X2AP_ID;
   ies_sgnb_add_ack->value.choice.SgNB_UE_X2AP_ID = sgnb_data.sgnb_ue_x2ap_id;
-
+  ASN_SEQUENCE_ADD(&(sgnb_ack->protocolIEs), &(IE_array[ie_index]));
+  
   ie_index = 2;
   ies_sgnb_add_ack= &IE_array[ie_index];
-  ies_sgnb_add_ack->criticality = Criticality_reject;
-  ies_sgnb_add_ack->id = ProtocolIE_ID_id_SgNBtoMeNBContainer;
-  ies_sgnb_add_ack->value.present = SgNBAdditionRequestAcknowledge_IEs__value_PR_SgNBtoMeNBContainer;
-  SgNBtoMeNBContainer_t *container = &ies_sgnb_add_ack->value.choice.SgNBtoMeNBContainer;
+  ies_sgnb_add_ack->criticality = X2N_Criticality_reject;
+  ies_sgnb_add_ack->id = X2N_ProtocolIE_ID_id_SgNBtoMeNBContainer;
+  ies_sgnb_add_ack->value.present = X2N_SgNBAdditionRequestAcknowledge_IEs__value_PR_SgNBtoMeNBContainer;
+  X2N_SgNBtoMeNBContainer_t *container = &ies_sgnb_add_ack->value.choice.SgNBtoMeNBContainer;
   container->buf = sgnb_data.menb_sgnb_container;
   container->size = sgnb_data.menb_sgnb_container_size;
-
+  ASN_SEQUENCE_ADD(&(sgnb_ack->protocolIEs), &(IE_array[ie_index]));
+  
   ie_index = 3;
   ies_sgnb_add_ack = &IE_array[ie_index];
-  ies_sgnb_add_ack->criticality = Criticality_reject;
-  ies_sgnb_add_ack->id =  ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList;
-  ies_sgnb_add_ack->value.present = SgNBAdditionRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList;
-  E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_t  * erabs_toadd_list = &(ies_sgnb_add_ack->value.choice.E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList);
-
+  ies_sgnb_add_ack->criticality = X2N_Criticality_reject;
+  ies_sgnb_add_ack->id =  X2N_ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList;
 
   int lcount = sgnb_data.erab_list.size();
-  //std::cout <<"Adding " << lcount << " erabs in response" << std::endl;
+  if(lcount > 0){
+    ies_sgnb_add_ack->value.present = X2N_SgNBAdditionRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList;
+    X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_t  * erabs_toadd_list = &(ies_sgnb_add_ack->value.choice.E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList);
+
   
-  //resize empty array in constructor
-  if (lcount >= erab_admit_array_size){
-    erab_admit_array_size = 2*lcount;
-
-    E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_t * new_ref = 0;
-    new_ref = (E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_t *)realloc(erab_admit_array, erab_admit_array_size * sizeof(E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_t));
-    assert(new_ref != 0);
-    erab_admit_array = new_ref;
-
-    erab_sgnb_present_array_size = 2 * lcount;
-    E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_t  * new_present = 0;
-    new_present = (E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_t  *)realloc(erab_sgnb_present_array, erab_sgnb_present_array_size * sizeof(E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_t ));
-    assert(new_present != 0);
-    erab_sgnb_present_array = new_present;
-
-    erab_sgnb_notpresent_array_size = 2 * lcount;
-    E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_t  * new_notpresent = 0;
-    new_notpresent = (E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_t  *)realloc(erab_sgnb_notpresent_array, erab_sgnb_notpresent_array_size * sizeof(E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_t ));
-    assert(new_notpresent != 0);
-    erab_sgnb_notpresent_array = new_notpresent;
-  }
+    //std::cout <<"Adding " << lcount << " erabs in response" << std::endl;
+  
+    //resize empty array in constructor
+    if (lcount >= erab_admit_array_size){
+      erab_admit_array_size = 2*lcount;
+      free(erab_admit_array);
+      erab_admit_array = (X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_t * ) calloc(erab_admit_array_size, sizeof(X2N_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_t));
+      assert(erab_admit_array != 0);
+
+      erab_sgnb_present_array_size = 2 * lcount;
+      free(erab_sgnb_present_array);
+      erab_sgnb_present_array = (X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_t *) calloc(erab_sgnb_present_array_size, sizeof(X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_t));
+      assert(erab_sgnb_present_array != 0);
+
+      erab_sgnb_notpresent_array_size = 2 * lcount;
+      free(erab_sgnb_notpresent_array);
+      erab_sgnb_notpresent_array = (X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_t *) calloc(erab_sgnb_notpresent_array_size, sizeof(X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_t));
+      assert(erab_sgnb_notpresent_array != 0);
+    }
 
-  std::vector<struct erab_item> * ref_erab_input  = &(sgnb_data.erab_list);
-  erabs_toadd_list->list.count = 0;
+    std::vector<struct erab_item> * ref_erab_input  = &(sgnb_data.erab_list);
+    erabs_toadd_list->list.count = 0;
 
-  int sgnb_present_index = 0;
-  int sgnb_notpresent_index = 0;
+    int sgnb_present_index = 0;
+    int sgnb_notpresent_index = 0;
 
-  for(unsigned int i = 0; i < lcount; i++){
+    for(unsigned int i = 0; i < lcount; i++){
 
-    erab_admit_array[i].id = ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item ;
-    erab_admit_array[i].criticality = Criticality_ignore;
-    erab_admit_array[i].value.present =  E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item;
+      erab_admit_array[i].id = X2N_ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item ;
+      erab_admit_array[i].criticality = X2N_Criticality_ignore;
+      erab_admit_array[i].value.present =  X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item;
 
-    E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_t * erab_item = &(erab_admit_array[i].value.choice.E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item);
+      X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_t * erab_item = &(erab_admit_array[i].value.choice.E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item);
 
-    erab_item->e_RAB_ID = (*ref_erab_input)[i].erab_id;
-    erab_item->en_DC_ResourceConfiguration.pDCPatSgNB =  (*ref_erab_input)[i].pdcp_at_sgnb;
-    erab_item->en_DC_ResourceConfiguration.mCGresources =  (*ref_erab_input)[i].mcg_resources;
-    erab_item->en_DC_ResourceConfiguration.sCGresources =  (*ref_erab_input)[i].scg_resources;
+      erab_item->e_RAB_ID = (*ref_erab_input)[i].erab_id;
+      erab_item->en_DC_ResourceConfiguration.pDCPatSgNB =  (*ref_erab_input)[i].pdcp_at_sgnb;
+      erab_item->en_DC_ResourceConfiguration.mCGresources =  (*ref_erab_input)[i].mcg_resources;
+      erab_item->en_DC_ResourceConfiguration.sCGresources =  (*ref_erab_input)[i].scg_resources;
 
 
-    erab_item->resource_configuration.present = (E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR)(*ref_erab_input)[i].sgnb_pdcp_present;
-    if( erab_item->resource_configuration.present == E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR_sgNBPDCPpresent){
+      erab_item->resource_configuration.present = (X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR)(*ref_erab_input)[i].sgnb_pdcp_present;
+      if( erab_item->resource_configuration.present == X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR_sgNBPDCPpresent){
       
-      erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint.transportLayerAddress.buf = (*ref_erab_input)[i].sgnb_item.transport_layer_addr;
-      erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint.transportLayerAddress.size = (*ref_erab_input)[i].sgnb_item.transport_layer_addr_size;
-      erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint.transportLayerAddress.bits_unused  = (*ref_erab_input)[i].sgnb_item.transport_layer_addr_unused;
-
-      erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint.gTP_TEID.buf = (*ref_erab_input)[i].sgnb_item.gtp_tei;
-      erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint.gTP_TEID.size = (*ref_erab_input)[i].sgnb_item.gtp_tei_size;
-
-      /* Force all optional parameters that are not set to NULL */
-      erab_sgnb_present_array[sgnb_present_index].sgNB_UL_GTP_TEIDatPDCP = NULL;
+       erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint.transportLayerAddress.buf = (*ref_erab_input)[i].sgnb_item.transport_layer_addr;
+       erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint.transportLayerAddress.size = (*ref_erab_input)[i].sgnb_item.transport_layer_addr_size;
+       erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint.transportLayerAddress.bits_unused  = (*ref_erab_input)[i].sgnb_item.transport_layer_addr_unused;
+
+       erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint.gTP_TEID.buf = (*ref_erab_input)[i].sgnb_item.gtp_tei;
+       erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint.gTP_TEID.size = (*ref_erab_input)[i].sgnb_item.gtp_tei_size;
+
+       /* Force all optional parameters that are not set to NULL */
+       erab_sgnb_present_array[sgnb_present_index].sgNB_UL_GTP_TEIDatPDCP = NULL;
+
+       /* validate constraints ..*/
+       int ret_constr;
+       ret_constr = asn_check_constraints(&asn_DEF_X2N_GTP_TEI, &erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint.gTP_TEID, errbuf, &errbuf_len);
+       if(ret_constr){
+         error_string.assign(&errbuf[0], errbuf_len);
+         error_string = "Error in constraints for GTP TEID.. Reason = " + error_string;
+         return false;
+       }
+
+       ret_constr = asn_check_constraints(&asn_DEF_X2N_GTPtunnelEndpoint, &erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint, errbuf, &errbuf_len);
+       if(ret_constr){
+         error_string.assign(&errbuf[0], errbuf_len);
+         error_string = "Error in constraints for GTP tunnel endpoint .. Reason = " + error_string;
+         return false;
+       }
+
+       ret_constr = asn_check_constraints(&asn_DEF_X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, &erab_sgnb_present_array[sgnb_present_index], errbuf, &errbuf_len);
+       if(ret_constr){
+         error_string.assign(&errbuf[0], errbuf_len);
+         error_string = "Error in constraints for E_RABS_ToBeAdded_SgNBAddReq_SgNBPDCPpresent.. Reason = " + error_string;
+         return false;
+       }
+
+       erab_item->resource_configuration.choice.sgNBPDCPpresent = &erab_sgnb_present_array[sgnb_present_index];
+       sgnb_present_index ++;
 
-      /* validate constraints ..*/
-      int ret_constr;
-      ret_constr = asn_check_constraints(&asn_DEF_GTP_TEI, &erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint.gTP_TEID, errbuf, &errbuf_len);
-      if(ret_constr){
-       error_string.assign(&errbuf[0], errbuf_len);
-       error_string = "Error in constraints for GTP TEID.. Reason = " + error_string;
-       return false;
       }
+      else if (erab_item->resource_configuration.present ==  X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR_sgNBPDCPnotpresent){
 
-      ret_constr = asn_check_constraints(&asn_DEF_GTPtunnelEndpoint, &erab_sgnb_present_array[sgnb_present_index].s1_DL_GTPtunnelEndpoint, errbuf, &errbuf_len);
-      if(ret_constr){
-       error_string.assign(&errbuf[0], errbuf_len);
-       error_string = "Error in constraints for GTP tunnel endpoint .. Reason = " + error_string;
-       return false;
-      }
-
-      ret_constr = asn_check_constraints(&asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, &erab_sgnb_present_array[sgnb_present_index], errbuf, &errbuf_len);
-      if(ret_constr){
-       error_string.assign(&errbuf[0], errbuf_len);
-       error_string = "Error in constraints for E_RABS_ToBeAdded_SgNBAddReq_SgNBPDCPpresent.. Reason = " + error_string;
-       return false;
-      }
+       erab_sgnb_notpresent_array[sgnb_notpresent_index].sgNB_DL_GTP_TEIDatSCG.transportLayerAddress.buf = (*ref_erab_input)[i].sgnb_item.transport_layer_addr;
+       erab_sgnb_notpresent_array[sgnb_notpresent_index].sgNB_DL_GTP_TEIDatSCG.transportLayerAddress.size = (*ref_erab_input)[i].sgnb_item.transport_layer_addr_size;
+       erab_sgnb_notpresent_array[sgnb_notpresent_index].sgNB_DL_GTP_TEIDatSCG.transportLayerAddress.bits_unused  = (*ref_erab_input)[i].sgnb_item.transport_layer_addr_unused;
 
-      erab_item->resource_configuration.choice.sgNBPDCPpresent = &erab_sgnb_present_array[sgnb_present_index];
-      sgnb_present_index ++;
+       erab_sgnb_notpresent_array[sgnb_notpresent_index].sgNB_DL_GTP_TEIDatSCG.gTP_TEID.buf = (unsigned char *)(*ref_erab_input)[i].sgnb_item.gtp_tei;
+       erab_sgnb_notpresent_array[sgnb_notpresent_index].sgNB_DL_GTP_TEIDatSCG.gTP_TEID.size = (*ref_erab_input)[i].sgnb_item.gtp_tei_size;
 
-    }
-    else if (erab_item->resource_configuration.present ==  E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR_sgNBPDCPnotpresent){
+       erab_sgnb_notpresent_array[sgnb_notpresent_index].secondary_sgNB_DL_GTP_TEIDatSCG = NULL;
 
-      erab_sgnb_notpresent_array[sgnb_notpresent_index].sgNB_DL_GTP_TEIDatSCG.transportLayerAddress.buf = (*ref_erab_input)[i].sgnb_item.transport_layer_addr;
-      erab_sgnb_notpresent_array[sgnb_notpresent_index].sgNB_DL_GTP_TEIDatSCG.transportLayerAddress.size = (*ref_erab_input)[i].sgnb_item.transport_layer_addr_size;
-      erab_sgnb_notpresent_array[sgnb_notpresent_index].sgNB_DL_GTP_TEIDatSCG.transportLayerAddress.bits_unused  = (*ref_erab_input)[i].sgnb_item.transport_layer_addr_unused;
+       /* validate constraints ..*/
+       int ret_constr;
+       ret_constr = asn_check_constraints(&asn_DEF_X2N_GTPtunnelEndpoint, &erab_sgnb_notpresent_array[sgnb_notpresent_index].sgNB_DL_GTP_TEIDatSCG, errbuf, &errbuf_len);
+       if(ret_constr){
+         error_string.assign(&errbuf[0], errbuf_len);
+         error_string = "Error in constraints for GTP tunnel endpoint .. Reason = " + error_string;
+         return false;
+       }
 
-      erab_sgnb_notpresent_array[sgnb_notpresent_index].sgNB_DL_GTP_TEIDatSCG.gTP_TEID.buf = (unsigned char *)(*ref_erab_input)[i].sgnb_item.gtp_tei;
-      erab_sgnb_notpresent_array[sgnb_notpresent_index].sgNB_DL_GTP_TEIDatSCG.gTP_TEID.size = (*ref_erab_input)[i].sgnb_item.gtp_tei_size;
 
-      erab_sgnb_notpresent_array[sgnb_notpresent_index].secondary_sgNB_DL_GTP_TEIDatSCG = NULL;
+       ret_constr = asn_check_constraints(&asn_DEF_X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent, &erab_sgnb_notpresent_array[sgnb_notpresent_index], errbuf, &errbuf_len);
+       if(ret_constr){
+         error_string.assign(&errbuf[0], errbuf_len);
+         error_string = "Error in constraints for E_RABS_ToBeAdded_SgNBAddReq_SgNBPDCPnotpresent.. Reason = " + error_string;
+         return false;
+       }
 
-      /* validate constraints ..*/
-      int ret_constr;
-      ret_constr = asn_check_constraints(&asn_DEF_GTPtunnelEndpoint, &erab_sgnb_notpresent_array[sgnb_notpresent_index].sgNB_DL_GTP_TEIDatSCG, errbuf, &errbuf_len);
-      if(ret_constr){
-       error_string.assign(&errbuf[0], errbuf_len);
-       error_string = "Error in constraints for GTP tunnel endpoint .. Reason = " + error_string;
-       return false;
+       erab_item->resource_configuration.choice.sgNBPDCPnotpresent = &erab_sgnb_notpresent_array[sgnb_notpresent_index]; ;
+       sgnb_notpresent_index ++;
+      }
+      else {
+       std::cerr <<"Could not find a pdcp present or not present flag. not adding erab item .." << std::endl;
+       continue;
       }
 
-
-      ret_constr = asn_check_constraints(&asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent, &erab_sgnb_notpresent_array[sgnb_notpresent_index], errbuf, &errbuf_len);
+      // check constraint
+      int ret_constr = asn_check_constraints(&asn_DEF_X2N_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, &erab_admit_array[i], errbuf, &errbuf_len);
       if(ret_constr){
        error_string.assign(&errbuf[0], errbuf_len);
-       error_string = "Error in constraints for E_RABS_ToBeAdded_SgNBAddReq_SgNBPDCPnotpresent.. Reason = " + error_string;
+       error_string = "Error in constraints for E_RABS_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs.. Reason = " + error_string;
        return false;
       }
 
-      erab_item->resource_configuration.choice.sgNBPDCPnotpresent = &erab_sgnb_notpresent_array[sgnb_notpresent_index]; ;
-      sgnb_notpresent_index ++;
-    }
-    else {
-      std::cerr <<"Could not find a pdcp present or not present flag. not adding erab item .." << std::endl;
-      continue;
-    }
-
-    // check constraint
-    int ret_constr = asn_check_constraints(&asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, &erab_admit_array[i], errbuf, &errbuf_len);
-    if(ret_constr){
-      error_string.assign(&errbuf[0], errbuf_len);
-      error_string = "Error in constraints for E_RABS_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs.. Reason = " + error_string;
-      return false;
+      ASN_SEQUENCE_ADD(erabs_toadd_list, &erab_admit_array[i]);
     }
-
-    ASN_SEQUENCE_ADD(erabs_toadd_list, &erab_admit_array[i]);
   }
-
+  else{
+    ies_sgnb_add_ack->value.present = X2N_SgNBAdditionRequestAcknowledge_IEs__value_PR_NOTHING;
+  }
+  
+  ASN_SEQUENCE_ADD(&(sgnb_ack->protocolIEs), &(IE_array[ie_index]));
   return true;
 }
 
@@ -378,24 +384,24 @@ bool sgnb_addition_response::encode_sgnb_addition_response(unsigned char* data_b
   bool res;
   if(sgnb_response == true){
 
-    x2ap_pdu_obj->present = X2AP_PDU_PR_successfulOutcome;
+    x2ap_pdu_obj->present = X2N_X2AP_PDU_PR_successfulOutcome;
     x2ap_pdu_obj->choice.successfulOutcome = successMsg;
     
-    successMsg->procedureCode = ProcedureCode_id_sgNBAdditionPreparation;
-    successMsg->criticality = Criticality_ignore;
-    successMsg->value.present = X2SuccessfulOutcome__value_PR_SgNBAdditionRequestAcknowledge;
+    successMsg->procedureCode = X2N_ProcedureCode_id_sgNBAdditionPreparation;
+    successMsg->criticality = X2N_Criticality_ignore;
+    successMsg->value.present = X2N_SuccessfulOutcome__value_PR_SgNBAdditionRequestAcknowledge;
 
     res = set_fields(successMsg, sgnb_data);
 
   } else {
 
-    x2ap_pdu_obj->present = X2AP_PDU_PR_unsuccessfulOutcome;
+    x2ap_pdu_obj->present = X2N_X2AP_PDU_PR_unsuccessfulOutcome;
     x2ap_pdu_obj->choice.unsuccessfulOutcome = unsuccessMsg;
 
 
-    unsuccessMsg->procedureCode = ProcedureCode_id_sgNBAdditionPreparation;
-    unsuccessMsg->criticality = Criticality_ignore;
-    unsuccessMsg->value.present = X2UnsuccessfulOutcome__value_PR_SgNBAdditionRequestReject;
+    unsuccessMsg->procedureCode = X2N_ProcedureCode_id_sgNBAdditionPreparation;
+    unsuccessMsg->criticality = X2N_Criticality_ignore;
+    unsuccessMsg->value.present = X2N_UnsuccessfulOutcome__value_PR_SgNBAdditionRequestReject;
 
     res = set_fields(unsuccessMsg, sgnb_data);
   }
@@ -403,16 +409,17 @@ bool sgnb_addition_response::encode_sgnb_addition_response(unsigned char* data_b
   if (!res){
     return false;
   }
-  int ret_constr = asn_check_constraints(&asn_DEF_X2AP_PDU, x2ap_pdu_obj, errbuf, &errbuf_len);
+
+  int ret_constr = asn_check_constraints(&asn_DEF_X2N_X2AP_PDU, x2ap_pdu_obj, errbuf, &errbuf_len);
   if(ret_constr){
     error_string.assign(&errbuf[0], errbuf_len);
-    error_string = "Error encoding X2AP Sgnb Addition Response  message. Reason = " + error_string;
+    error_string = "Error : constraints failed for  X2AP Sgnb Addition Response  message. Reason = " + error_string;
     return false;
   }
 
-  //xer_fprint(stdout, &asn_DEF_X2AP_PDU, x2ap_pdu_obj);
+  //xer_fprint(stdout, &asn_DEF_X2N_X2AP_PDU, x2ap_pdu_obj);
 
-  asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_X2AP_PDU, x2ap_pdu_obj, data_buf, *data_size);
+  asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_X2N_X2AP_PDU, x2ap_pdu_obj, data_buf, *data_size);
   if(retval.encoded == -1){
     error_string.assign(strerror(errno));
     return false;