From 8a11e8dd52e03e7491f5f1a6fd3a11b191898b46 Mon Sep 17 00:00:00 2001
From: Raymond Knopp <raymond.knopp@eurecom.fr>
Date: Fri, 21 Sep 2018 07:58:25 +0200
Subject: [PATCH] protection of RLC configuration in case of CU

---
 openair2/RRC/LTE/rrc_eNB.c | 501 ++++++++++++++++++++-----------------
 1 file changed, 269 insertions(+), 232 deletions(-)

diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c
index 4c54f75d29..c2dc1c761a 100644
--- a/openair2/RRC/LTE/rrc_eNB.c
+++ b/openair2/RRC/LTE/rrc_eNB.c
@@ -507,6 +507,8 @@ init_MCCH(
 
   int                                 sync_area = 0;
   // initialize RRC_eNB_INST MCCH entry
+  eNB_RRC_INST *rrc = RC.rrc[enb_mod_idP];
+
   RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE =
     malloc(RC.rrc[enb_mod_idP]->carrier[CC_id].num_mbsfn_sync_area * sizeof(uint8_t*));
 
@@ -551,43 +553,44 @@ init_MCCH(
 
   //  LOG_I(RRC, "DUY: serviceID is %d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->tmgi_r9.serviceId_r9.buf[2]);
   //  LOG_I(RRC, "DUY: session ID is %d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->sessionId_r9->buf[0]);
-  rrc_mac_config_req_eNB(enb_mod_idP, CC_id,
-			 0,0,0,0,0,
+  if (rrc->node_type == ngran_eNB) {
+    rrc_mac_config_req_eNB(enb_mod_idP, CC_id,
+			   0,0,0,0,0,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-			 0,
+			   0,
 #endif
-			 0,//rnti
-			 (BCCH_BCH_Message_t *)NULL,
-			 (RadioResourceConfigCommonSIB_t *) NULL,
+			   0,//rnti
+			   (BCCH_BCH_Message_t *)NULL,
+			   (RadioResourceConfigCommonSIB_t *) NULL,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-			 (RadioResourceConfigCommonSIB_t *) NULL,
+			   (RadioResourceConfigCommonSIB_t *) NULL,
 #endif
-			 (struct PhysicalConfigDedicated *)NULL,
+			   (struct PhysicalConfigDedicated *)NULL,
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-			 (SCellToAddMod_r10_t *)NULL,
-			 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-			 (MeasObjectToAddMod_t **) NULL,
-			 (MAC_MainConfig_t *) NULL,
-			 0,
-			 (struct LogicalChannelConfig *)NULL,
-			 (MeasGapConfig_t *) NULL,
-			 (TDD_Config_t *) NULL,
-			 (MobilityControlInfo_t *)NULL, 
-			 (SchedulingInfoList_t *) NULL, 
-			 0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
+			   (SCellToAddMod_r10_t *)NULL,
+			   //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+			   (MeasObjectToAddMod_t **) NULL,
+			   (MAC_MainConfig_t *) NULL,
+			   0,
+			   (struct LogicalChannelConfig *)NULL,
+			   (MeasGapConfig_t *) NULL,
+			   (TDD_Config_t *) NULL,
+			   (MobilityControlInfo_t *)NULL, 
+			   (SchedulingInfoList_t *) NULL, 
+			   0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
 #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-			 ,
-			 0,
-			 (MBSFN_AreaInfoList_r9_t *) NULL,
-			 (PMCH_InfoList_r9_t *) & (RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9)
+			   ,
+			   0,
+			   (MBSFN_AreaInfoList_r9_t *) NULL,
+			   (PMCH_InfoList_r9_t *) & (RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9)
 #endif
 #if (RRC_VERSION >= MAKE_VERSION(13, 0, 0))
-			 ,
-			 (SystemInformationBlockType1_v1310_IEs_t *)NULL
+			   ,
+			   (SystemInformationBlockType1_v1310_IEs_t *)NULL
 #endif
-			 );
-  
+			   );
+  }
   //LOG_I(RRC,"DUY: lcid after rrc_mac_config_req is %02d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->logicalChannelIdentity_r9);
 
 }
@@ -621,18 +624,21 @@ static void init_MBMS(
                              , &(RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9)
 #endif
                              ,NULL);
-
-    rrc_rlc_config_asn1_req(&ctxt,
-                            NULL, // SRB_ToAddModList
-                            NULL,   // DRB_ToAddModList
-                            NULL,   // DRB_ToReleaseList
-                            &(RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9)
+    
+    if ( (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_eNB_CU) ||
+	 (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_ng_eNB_CU) ||
+	 (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_gNB_CU)   ) {
+      rrc_rlc_config_asn1_req(&ctxt,
+			      NULL, // SRB_ToAddModList
+			      NULL,   // DRB_ToAddModList
+			      NULL,   // DRB_ToReleaseList
+			      &(RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9)
 
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-                            ,0, 0
+			      ,0, 0
 #endif
-                            );
-
+			      );
+    }
     //rrc_mac_config_req();
   }
 }
@@ -1330,39 +1336,41 @@ rrc_eNB_generate_RRCConnectionReestablishment(
         LOG_D(RRC,
               PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ  (SRB1) ---> MAC_eNB\n",
               PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-        rrc_mac_config_req_eNB(ctxt_pP->module_id,
-                           ue_context_pP->ue_context.primaryCC_id,
-                           0,0,0,0,0,
+	if (rrc->node_type == ngran_eNB) {
+	  rrc_mac_config_req_eNB(ctxt_pP->module_id,
+				 ue_context_pP->ue_context.primaryCC_id,
+				 0,0,0,0,0,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-			 0,
+				 0,
 #endif
-                           ctxt_pP->rnti,
-                           (BCCH_BCH_Message_t *) NULL, 
-                           (RadioResourceConfigCommonSIB_t *) NULL,
+				 ctxt_pP->rnti,
+				 (BCCH_BCH_Message_t *) NULL, 
+				 (RadioResourceConfigCommonSIB_t *) NULL,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-                           (RadioResourceConfigCommonSIB_t *) NULL,
+				 (RadioResourceConfigCommonSIB_t *) NULL,
 #endif
-                           (struct PhysicalConfigDedicated* ) ue_context_pP->ue_context.physicalConfigDedicated,
+				 (struct PhysicalConfigDedicated* ) ue_context_pP->ue_context.physicalConfigDedicated,
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-                           (SCellToAddMod_r10_t *)NULL,
-                           //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-                           (MeasObjectToAddMod_t **) NULL,
-                           ue_context_pP->ue_context.mac_MainConfig,
-                           1,
-                           SRB1_logicalChannelConfig,
-                           ue_context_pP->ue_context.measGapConfig,
-                           (TDD_Config_t *) NULL,
-                           NULL,
-                           (SchedulingInfoList_t *) NULL,
-                           0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
+				 (SCellToAddMod_r10_t *)NULL,
+				 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+				 (MeasObjectToAddMod_t **) NULL,
+				 ue_context_pP->ue_context.mac_MainConfig,
+				 1,
+				 SRB1_logicalChannelConfig,
+				 ue_context_pP->ue_context.measGapConfig,
+				 (TDD_Config_t *) NULL,
+				 NULL,
+				 (SchedulingInfoList_t *) NULL,
+				 0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-                           , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
+				 , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
 #endif
 #if (RRC_VERSION >= MAKE_VERSION(13, 0, 0))
-                           ,(SystemInformationBlockType1_v1310_IEs_t *)NULL 
+				 ,(SystemInformationBlockType1_v1310_IEs_t *)NULL 
 #endif
-        );
+				 );
+	}
         break;
       }
     }
@@ -4772,45 +4780,46 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   LOG_D(RRC,
         "handover_config [FRAME %05d][RRC_eNB][MOD %02d][][--- MAC_CONFIG_REQ  (SRB1 UE %x) --->][MAC_eNB][MOD %02d][]\n",
         ctxt_pP->frame, ctxt_pP->module_id, ue_context_pP->ue_context.rnti, ctxt_pP->module_id);
-  rrc_mac_config_req_eNB(
-			 ctxt_pP->module_id,
-			 ue_context_pP->ue_context.primaryCC_id,
-			 0,0,0,0,0,
+  if (rrc->node_type == ngran_eNB) {
+    rrc_mac_config_req_eNB(
+			   ctxt_pP->module_id,
+			   ue_context_pP->ue_context.primaryCC_id,
+			   0,0,0,0,0,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-0,
+			   0,
 #endif 
-			 ue_context_pP->ue_context.rnti,
-			 (BCCH_BCH_Message_t *) NULL,
-			 (RadioResourceConfigCommonSIB_t*) NULL,
+			   ue_context_pP->ue_context.rnti,
+			   (BCCH_BCH_Message_t *) NULL,
+			   (RadioResourceConfigCommonSIB_t*) NULL,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-			 (RadioResourceConfigCommonSIB_t*) NULL,
+			   (RadioResourceConfigCommonSIB_t*) NULL,
 #endif
-			 ue_context_pP->ue_context.physicalConfigDedicated,
+			   ue_context_pP->ue_context.physicalConfigDedicated,
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-			 (SCellToAddMod_r10_t *)NULL,
-			 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-			 (MeasObjectToAddMod_t **) NULL,
-			 ue_context_pP->ue_context.mac_MainConfig,
-			 1,
-			 SRB1_logicalChannelConfig,
-			 ue_context_pP->ue_context.measGapConfig,
-			 (TDD_Config_t*) NULL,
-			 (MobilityControlInfo_t*) NULL,
-			 (SchedulingInfoList_t*) NULL,
-			 0,
-			 NULL,
-			 NULL,
-			 (MBSFN_SubframeConfigList_t *) NULL
+			   (SCellToAddMod_r10_t *)NULL,
+			   //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+			   (MeasObjectToAddMod_t **) NULL,
+			   ue_context_pP->ue_context.mac_MainConfig,
+			   1,
+			   SRB1_logicalChannelConfig,
+			   ue_context_pP->ue_context.measGapConfig,
+			   (TDD_Config_t*) NULL,
+			   (MobilityControlInfo_t*) NULL,
+			   (SchedulingInfoList_t*) NULL,
+			   0,
+			   NULL,
+			   NULL,
+			   (MBSFN_SubframeConfigList_t *) NULL
 #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-			 , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
+			   , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
 #endif
 #if (RRC_VERSION >= MAKE_VERSION(13, 0, 0))
-			 ,
-			 (SystemInformationBlockType1_v1310_IEs_t *)NULL
+			   ,
+			   (SystemInformationBlockType1_v1310_IEs_t *)NULL
 #endif
-			 );
-  
+			   );
+  }
   // Configure target eNB SRB2
   /// SRB2
   SRB2_config = CALLOC(1, sizeof(*SRB2_config));
@@ -5290,16 +5299,18 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
                            , (PMCH_InfoList_r9_t *) NULL
 #endif
                            ,NULL);
-
-  rrc_rlc_config_asn1_req(&ctxt,
-                          ue_context_pP->ue_context.SRB_configList,
-                          (DRB_ToAddModList_t *) NULL, (DRB_ToReleaseList_t *) NULL
+  if ( (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_eNB_CU) ||
+       (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_ng_eNB_CU) ||
+       (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_gNB_CU)   ) {
+    rrc_rlc_config_asn1_req(&ctxt,
+			    ue_context_pP->ue_context.SRB_configList,
+			    (DRB_ToAddModList_t *) NULL, (DRB_ToReleaseList_t *) NULL
 #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-                          , (PMCH_InfoList_r9_t *) NULL
-                          , 0, 0
+			    , (PMCH_InfoList_r9_t *) NULL
+			    , 0, 0
 #endif
-                         );
-
+			    );
+  }
   /* Initialize NAS list */
   dedicatedInfoNASList = NULL;
 
@@ -5360,41 +5371,42 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   //rrc_rlc_data_req(ctxt_pP->module_id,frameP, 1,(ue_mod_idP*NB_RB_MAX)+DCCH,rrc_eNB_mui++,0,size,(char*)buffer);
   //pdcp_data_req (ctxt_pP->module_id, frameP, 1, (ue_mod_idP * NB_RB_MAX) + DCCH,rrc_eNB_mui++, 0, size, (char *) buffer, 1);
 
-  rrc_mac_config_req_eNB(
-			 ctxt_pP->module_id,
-			 ue_context_pP->ue_context.primaryCC_id,
-			 0,0,0,0,0,
+  if (rrc->node_type == ngran_eNB) {
+    rrc_mac_config_req_eNB(
+			   ctxt_pP->module_id,
+			   ue_context_pP->ue_context.primaryCC_id,
+			   0,0,0,0,0,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-			 0,
+			   0,
 #endif
-			 ue_context_pP->ue_context.rnti,
-			 (BCCH_BCH_Message_t *) NULL,
-			 (RadioResourceConfigCommonSIB_t *) NULL,
+			   ue_context_pP->ue_context.rnti,
+			   (BCCH_BCH_Message_t *) NULL,
+			   (RadioResourceConfigCommonSIB_t *) NULL,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-			 (RadioResourceConfigCommonSIB_t *) NULL,
+			   (RadioResourceConfigCommonSIB_t *) NULL,
 #endif
-			 ue_context_pP->ue_context.physicalConfigDedicated,
+			   ue_context_pP->ue_context.physicalConfigDedicated,
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-			 (SCellToAddMod_r10_t *)NULL,
-			 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-			 (MeasObjectToAddMod_t **) NULL,
-			 ue_context_pP->ue_context.mac_MainConfig,
-			 1,
-			 SRB1_logicalChannelConfig,
-			 ue_context_pP->ue_context.measGapConfig,
-			 (TDD_Config_t *) NULL,
-			 (MobilityControlInfo_t *) mobilityInfo,
-			 (SchedulingInfoList_t *) NULL, 0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
+			   (SCellToAddMod_r10_t *)NULL,
+			   //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+			   (MeasObjectToAddMod_t **) NULL,
+			   ue_context_pP->ue_context.mac_MainConfig,
+			   1,
+			   SRB1_logicalChannelConfig,
+			   ue_context_pP->ue_context.measGapConfig,
+			   (TDD_Config_t *) NULL,
+			   (MobilityControlInfo_t *) mobilityInfo,
+			   (SchedulingInfoList_t *) NULL, 0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
 #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-			 , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
+			   , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
 #endif
 #if (RRC_VERSION >= MAKE_VERSION(13, 0, 0))
-			 ,
-			 (SystemInformationBlockType1_v1310_IEs_t *)NULL
+			   ,
+			   (SystemInformationBlockType1_v1310_IEs_t *)NULL
 #endif
-			 );
-  
+			   );
+  }
   /*
      handoverCommand.criticalExtensions.present = HandoverCommand__criticalExtensions_PR_c1;
      handoverCommand.criticalExtensions.choice.c1.present = HandoverCommand__criticalExtensions__c1_PR_handoverCommand_r8;
@@ -5518,19 +5530,22 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
     , (PMCH_InfoList_r9_t *) NULL
 #endif
     ,NULL);
-  // Refresh SRBs/DRBs
-  rrc_rlc_config_asn1_req(
-    ctxt_pP,
-    SRB_configList, // NULL,  //LG-RK 14/05/2014 SRB_configList,
-    DRB_configList,
-//    (DRB_ToReleaseList_t *) NULL
-    DRB_Release_configList2
+  if ( (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_eNB_CU) ||
+       (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_ng_eNB_CU) ||
+       (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_gNB_CU)   ) {
+    // Refresh SRBs/DRBs
+    rrc_rlc_config_asn1_req(
+			    ctxt_pP,
+			    SRB_configList, // NULL,  //LG-RK 14/05/2014 SRB_configList,
+			    DRB_configList,
+			    //    (DRB_ToReleaseList_t *) NULL
+			    DRB_Release_configList2
 #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-    , (PMCH_InfoList_r9_t *) NULL
-    , 0, 0
+			    , (PMCH_InfoList_r9_t *) NULL
+			    , 0, 0
 #endif
-  );
-  
+			    );
+  }
   // set the SRB active in Ue context
   if (SRB_configList != NULL) {
     for (i = 0; (i < SRB_configList->list.count) && (i < 3); i++) {
@@ -5632,100 +5647,107 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
             DRB2LCHAN[i] = (uint8_t) * DRB_configList->list.array[i]->logicalChannelIdentity;
           }
 
-          rrc_mac_config_req_eNB(
-				 ctxt_pP->module_id,
-				 ue_context_pP->ue_context.primaryCC_id,
-				 0,0,0,0,0,
+	  if (rrc->node_type == ngran_eNB) {
+	    rrc_mac_config_req_eNB(
+				   ctxt_pP->module_id,
+				   ue_context_pP->ue_context.primaryCC_id,
+				   0,0,0,0,0,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-				 0,
+				   0,
 #endif
-				 ue_context_pP->ue_context.rnti,
-				 (BCCH_BCH_Message_t *) NULL,
-				 (RadioResourceConfigCommonSIB_t *) NULL,
+				   ue_context_pP->ue_context.rnti,
+				   (BCCH_BCH_Message_t *) NULL,
+				   (RadioResourceConfigCommonSIB_t *) NULL,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-				 (RadioResourceConfigCommonSIB_t *) NULL,
+				   (RadioResourceConfigCommonSIB_t *) NULL,
 #endif
-				 ue_context_pP->ue_context.physicalConfigDedicated,
+				   ue_context_pP->ue_context.physicalConfigDedicated,
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-				 (SCellToAddMod_r10_t *)NULL,
-				 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-				 (MeasObjectToAddMod_t **) NULL,
-				 ue_context_pP->ue_context.mac_MainConfig,
-				 DRB2LCHAN[i],
-				 DRB_configList->list.array[i]->logicalChannelConfig,
-				 ue_context_pP->ue_context.measGapConfig,
-				 (TDD_Config_t *) NULL,
-				 NULL,
-				 (SchedulingInfoList_t *) NULL,
-				 0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
+				   (SCellToAddMod_r10_t *)NULL,
+				   //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+				   (MeasObjectToAddMod_t **) NULL,
+				   ue_context_pP->ue_context.mac_MainConfig,
+				   DRB2LCHAN[i],
+				   DRB_configList->list.array[i]->logicalChannelConfig,
+				   ue_context_pP->ue_context.measGapConfig,
+				   (TDD_Config_t *) NULL,
+				   NULL,
+				   (SchedulingInfoList_t *) NULL,
+				   0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
 #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-				 , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
+				   , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
 #endif
 #if (RRC_VERSION >= MAKE_VERSION(13, 0, 0))
-				 ,
-				 (SystemInformationBlockType1_v1310_IEs_t *)NULL
+				   ,
+				   (SystemInformationBlockType1_v1310_IEs_t *)NULL
 #endif
-				 );
-	  
-        } else {        // remove LCHAN from MAC/PHY
+				   );
+	  }
+	} else {        // remove LCHAN from MAC/PHY
 
           if (ue_context_pP->ue_context.DRB_active[drb_id] == 1) {
             // DRB has just been removed so remove RLC + PDCP for DRB
             /*      rrc_pdcp_config_req (ctxt_pP->module_id, frameP, 1, CONFIG_ACTION_REMOVE,
                (ue_mod_idP * NB_RB_MAX) + DRB2LCHAN[i],UNDEF_SECURITY_MODE);
              */
-            rrc_rlc_config_req(
-              ctxt_pP,
-              SRB_FLAG_NO,
-              MBMS_FLAG_NO,
-              CONFIG_ACTION_REMOVE,
-              DRB2LCHAN[i],
-              Rlc_info_um);
+	    if ( (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_eNB_CU) ||
+		 (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_ng_eNB_CU) ||
+		 (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_gNB_CU)   ) {
+	      rrc_rlc_config_req(
+				 ctxt_pP,
+				 SRB_FLAG_NO,
+				 MBMS_FLAG_NO,
+				 CONFIG_ACTION_REMOVE,
+				 DRB2LCHAN[i],
+				 Rlc_info_um);
+	    }
           }
 
           ue_context_pP->ue_context.DRB_active[drb_id] = 0;
           LOG_D(RRC,
                 PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ  (DRB) ---> MAC_eNB\n",
                 PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-          rrc_mac_config_req_eNB(ctxt_pP->module_id,
-				 ue_context_pP->ue_context.primaryCC_id,
-				 0,0,0,0,0,
+	  if (rrc->node_type == ngran_eNB) {
+	    rrc_mac_config_req_eNB(ctxt_pP->module_id,
+				   ue_context_pP->ue_context.primaryCC_id,
+				   0,0,0,0,0,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-				 0,
+				   0,
 #endif
-				 ue_context_pP->ue_context.rnti,
-				 (BCCH_BCH_Message_t *) NULL,
-				 (RadioResourceConfigCommonSIB_t *) NULL,
+				   ue_context_pP->ue_context.rnti,
+				   (BCCH_BCH_Message_t *) NULL,
+				   (RadioResourceConfigCommonSIB_t *) NULL,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-				 (RadioResourceConfigCommonSIB_t *) NULL,
+				   (RadioResourceConfigCommonSIB_t *) NULL,
 #endif
-				 ue_context_pP->ue_context.physicalConfigDedicated,
+				   ue_context_pP->ue_context.physicalConfigDedicated,
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-				 (SCellToAddMod_r10_t *)NULL,
-				 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-				 (MeasObjectToAddMod_t **) NULL,
-				 ue_context_pP->ue_context.mac_MainConfig,
-				 DRB2LCHAN[i],
-				 (LogicalChannelConfig_t *) NULL,
-				 (MeasGapConfig_t *) NULL,
-				 (TDD_Config_t *) NULL,
-				 NULL, 
-				 (SchedulingInfoList_t *) NULL,
-				 0, NULL, NULL, NULL
+				   (SCellToAddMod_r10_t *)NULL,
+				   //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+				   (MeasObjectToAddMod_t **) NULL,
+				   ue_context_pP->ue_context.mac_MainConfig,
+				   DRB2LCHAN[i],
+				   (LogicalChannelConfig_t *) NULL,
+				   (MeasGapConfig_t *) NULL,
+				   (TDD_Config_t *) NULL,
+				   NULL, 
+				   (SchedulingInfoList_t *) NULL,
+				   0, NULL, NULL, NULL
 #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-				 , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
+				   , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
 #endif
 #if (RRC_VERSION >= MAKE_VERSION(13, 0, 0))
-				 ,
-				 (SystemInformationBlockType1_v1310_IEs_t *)NULL
+				   ,
+				   (SystemInformationBlockType1_v1310_IEs_t *)NULL
 #endif
-				 );
+				   );
+	  }
         }
       }
     }
-   free(DRB_configList);
+    free(DRB_configList);
     ue_context_pP->ue_context.DRB_configList2[xid] = NULL;
   }
 
@@ -5830,41 +5852,43 @@ rrc_eNB_generate_RRCConnectionSetup(
         LOG_D(RRC,
               PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ  (SRB1) ---> MAC_eNB\n",
               PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-        rrc_mac_config_req_eNB(
-			       ctxt_pP->module_id,
-			       ue_context_pP->ue_context.primaryCC_id,
-			       0,0,0,0,0,
+	if (rrc->node_type == ngran_eNB) {
+	  rrc_mac_config_req_eNB(
+				 ctxt_pP->module_id,
+				 ue_context_pP->ue_context.primaryCC_id,
+				 0,0,0,0,0,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-			       0,
+				 0,
 #endif
-			       ue_context_pP->ue_context.rnti,
-			       (BCCH_BCH_Message_t *) NULL,
-			       (RadioResourceConfigCommonSIB_t *) NULL,
+				 ue_context_pP->ue_context.rnti,
+				 (BCCH_BCH_Message_t *) NULL,
+				 (RadioResourceConfigCommonSIB_t *) NULL,
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-			       (RadioResourceConfigCommonSIB_t *) NULL,
+				 (RadioResourceConfigCommonSIB_t *) NULL,
 #endif
-			       ue_context_pP->ue_context.physicalConfigDedicated,
+				 ue_context_pP->ue_context.physicalConfigDedicated,
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-			       (SCellToAddMod_r10_t *)NULL,
-			       //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-			       (MeasObjectToAddMod_t **) NULL,
-			       ue_context_pP->ue_context.mac_MainConfig,
-			       1,
-			       SRB1_logicalChannelConfig,
-			       ue_context_pP->ue_context.measGapConfig,
-			       (TDD_Config_t *) NULL,
-			       NULL,
-			       (SchedulingInfoList_t *) NULL,
-			       0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
+				 (SCellToAddMod_r10_t *)NULL,
+				 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+				 (MeasObjectToAddMod_t **) NULL,
+				 ue_context_pP->ue_context.mac_MainConfig,
+				 1,
+				 SRB1_logicalChannelConfig,
+				 ue_context_pP->ue_context.measGapConfig,
+				 (TDD_Config_t *) NULL,
+				 NULL,
+				 (SchedulingInfoList_t *) NULL,
+				 0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
 #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-			       , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
+				 , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
 #endif
 #if (RRC_VERSION >= MAKE_VERSION(13, 0, 0))
-			       ,
-			       (SystemInformationBlockType1_v1310_IEs_t *)NULL
+				 ,
+				 (SystemInformationBlockType1_v1310_IEs_t *)NULL
 #endif
-			       );
+				 );
+	}
       }
     }
   }
@@ -6343,16 +6367,20 @@ rrc_eNB_decode_ccch(
 #endif
                                ,NULL);
 
-
-      rrc_rlc_config_asn1_req(ctxt_pP,
-			      ue_context_p->ue_context.SRB_configList,
-			      (DRB_ToAddModList_t*) NULL,
-			      (DRB_ToReleaseList_t*) NULL
+      if ( (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_eNB_CU) ||
+	   (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_ng_eNB_CU) ||
+	   (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_gNB_CU)   ) {
+	rrc_rlc_config_asn1_req(ctxt_pP,
+				ue_context_p->ue_context.SRB_configList,
+				(DRB_ToAddModList_t*) NULL,
+				(DRB_ToReleaseList_t*) NULL
 #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-			      , (PMCH_InfoList_r9_t *) NULL,
-			      0,0
+				, (PMCH_InfoList_r9_t *) NULL,
+				0,0
 #   endif
-			      );
+				);
+      }
+
 #endif //NO_RRM
 	}
     break;
@@ -6415,7 +6443,16 @@ rrc_eNB_decode_ccch(
             random_value = (((uint64_t)mme_code) << 32) | m_tmsi;
             if ((ue_context_p = rrc_eNB_ue_context_stmsi_exist(ctxt_pP, mme_code, m_tmsi))) {
 	      LOG_I(RRC," S-TMSI exists, ue_context_p %p, old rnti %x => %x\n",ue_context_p,ue_context_p->ue_context.rnti,ctxt_pP->rnti);
-	      rrc_mac_remove_ue(ctxt_pP->module_id, ue_context_p->ue_context.rnti);
+
+	      if ( (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_eNB_CU) ||
+		   (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_ng_eNB_CU) ||
+		   (RC.rrc[ctxt_pP->module_id]->node_type  != ngran_gNB_CU)   ) {
+		rrc_mac_remove_ue(ctxt_pP->module_id, ue_context_p->ue_context.rnti);
+	      }
+	      else {
+		// send message to DU to remove context
+		AssertFatal(1==0,"Need to added context removal\n");
+	      }
 	      stmsi_received=1;
               /* replace rnti in the context */
               /* for that, remove the context from the RB tree */
-- 
GitLab