diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c
index c9e67a7eceb952e05879a7bdd9b0f3dfa0f9e76d..9c12d4b1d1ad0dbb965d3ee1d4dc193bca323621 100644
--- a/openair2/ENB_APP/enb_config.c
+++ b/openair2/ENB_APP/enb_config.c
@@ -822,7 +822,7 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc) {
 		RRC_CONFIGURATION_REQ (msg_p).nb_antenna_ports[j] = nb_antenna_ports;
 		
 	      }
-	      else {//this is CU, SIB2-20 in CU
+	      if (rrc->node_type != ngran_eNB_DU) {//this is CU or eNB, SIB2-20 in CU
 	      
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
 		if (!pbch_repetition)
diff --git a/openair2/F1AP/f1ap_du_rrc_message_transfer.c b/openair2/F1AP/f1ap_du_rrc_message_transfer.c
index 12d599bc39c4f5d16225b49364836efd0172d3c8..6d9099d6bcbb59550bdf1d7857185db8c56e8add 100644
--- a/openair2/F1AP/f1ap_du_rrc_message_transfer.c
+++ b/openair2/F1AP/f1ap_du_rrc_message_transfer.c
@@ -314,6 +314,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t       instance,
         "Unknown message\n");
         break;
     }// switch case
+    return(0);
   } else if (srb_id == 1) { 
 //     rrc_rlc_config_asn1_req(&ctxt,
 //         SRB_configList,
@@ -325,13 +326,96 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t       instance,
 // #   endif
 //         );
 
-    LOG_I(DU_F1AP, "Received DL RRC Transfer on srb_id 1\n");
-    rlc_op_status_t    rlc_status;
-    boolean_t          ret             = TRUE;
-    mem_block_t       *pdcp_pdu_p      = NULL; 
-    pdcp_pdu_p = get_free_mem_block(rrc_dl_sdu_len, __func__);
-    memset(&pdcp_pdu_p->data[0], 0, rrc_dl_sdu_len);
-    memcpy(&pdcp_pdu_p->data[0], ie->value.choice.RRCContainer.buf, rrc_dl_sdu_len);
+    DL_DCCH_Message_t* dl_dcch_msg=NULL;
+    asn_dec_rval_t dec_rval;
+    dec_rval = uper_decode(NULL,
+         &asn_DEF_DL_DCCH_Message,
+         (void**)&dl_dcch_msg,
+         ie->value.choice.RRCContainer.buf,
+         rrc_dl_sdu_len,0,0);
+
+    if (dl_dcch_msg->message.present == DL_DCCH_MessageType_PR_c1) {
+     
+      switch (dl_dcch_msg->message.choice.c1.present) {
+	
+      case DL_DCCH_MessageType__c1_PR_NOTHING:
+        LOG_I(RRC, "Received PR_NOTHING on DL-DCCH-Message\n");
+        return;
+	
+      case DL_DCCH_MessageType__c1_PR_csfbParametersResponseCDMA2000:
+      case DL_DCCH_MessageType__c1_PR_dlInformationTransfer:
+      case DL_DCCH_MessageType__c1_PR_handoverFromEUTRAPreparationRequest:
+      case DL_DCCH_MessageType__c1_PR_mobilityFromEUTRACommand:
+        break;
+      case DL_DCCH_MessageType__c1_PR_rrcConnectionReconfiguration:
+	// handle RRCConnectionReconfiguration
+        LOG_I(RRC,
+	      "Logical Channel DL-DCCH (SRB1), Received RRCConnectionReconfiguration DU_ID %x/RNTI %x\n",  
+	      du_ue_f1ap_id,
+	      f1ap_get_rnti_by_du_id(&f1ap_du_ue[instance],du_ue_f1ap_id));
+	
+        RRCConnectionReconfiguration_t* rrcConnectionReconfiguration = &dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration;
+	
+	if (rrcConnectionReconfiguration->criticalExtensions.present == RRCConnectionReconfiguration__criticalExtensions_PR_c1) {
+	  if (rrcConnectionReconfiguration->criticalExtensions.choice.c1.present ==
+	      RRCConnectionReconfiguration__criticalExtensions__c1_PR_rrcConnectionReconfiguration_r8) {
+	    RRCConnectionReconfiguration_r8_IEs_t* rrcConnectionReconfiguration_r8 =
+	      &rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8;
+	    
+	    if (rrcConnectionReconfiguration_r8->mobilityControlInfo) {
+	      LOG_I(RRC,"Mobility Control Information is present\n");
+	      AssertFatal(1==0,"Can't handle this yet in DU\n");
+	    }
+	    if (rrcConnectionReconfiguration_r8->measConfig != NULL) {
+	      LOG_I(RRC,"Measurement Configuration is present\n");
+	      
+	    }
+	    
+	    if (rrcConnectionReconfiguration_r8->radioResourceConfigDedicated) {
+	      LOG_I(RRC,"Radio Resource Configuration is present\n");
+	      RadioResourceConfigDedicated_t* radioResourceConfigDedicated = rrcConnectionReconfiguration_r8->radioResourceConfigDedicated;
+	      long SRB_id,DRB_id;
+	      int i,cnt;
+	      LogicalChannelConfig_t *SRB1_logicalChannelConfig,*SRB2_logicalChannelConfig;
+	      
+	      //	radioResourceConfigDedicated->physicalConfigDedicated;
+	      
+	    }
+	    break;
+	  case DL_DCCH_MessageType__c1_PR_rrcConnectionRelease:
+	    // handle RRCConnectionRelease
+	    break;
+	  case DL_DCCH_MessageType__c1_PR_securityModeCommand:
+	  case DL_DCCH_MessageType__c1_PR_ueCapabilityEnquiry:
+	  case DL_DCCH_MessageType__c1_PR_counterCheck:
+#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
+	  case DL_DCCH_MessageType__c1_PR_loggedMeasurementConfiguration_r10:
+	  case DL_DCCH_MessageType__c1_PR_rnReconfiguration_r10:
+#endif
+	  case DL_DCCH_MessageType__c1_PR_spare1:
+	  case DL_DCCH_MessageType__c1_PR_spare2:
+	  case DL_DCCH_MessageType__c1_PR_spare3:
+#if (RRC_VERSION < MAKE_VERSION(14, 0, 0))
+	  case DL_DCCH_MessageType__c1_PR_spare4:
+#endif
+	    break;
+	  }
+	  
+	}	
+      }
+    }
+  }
+  else if (srb_id == 2) {
+    
+  }
+
+  LOG_I(DU_F1AP, "Received DL RRC Transfer on srb_id %d\n",srb_id);
+  rlc_op_status_t    rlc_status;
+  boolean_t          ret             = TRUE;
+  mem_block_t       *pdcp_pdu_p      = NULL; 
+  pdcp_pdu_p = get_free_mem_block(rrc_dl_sdu_len, __func__);
+  memset(&pdcp_pdu_p->data[0], 0, rrc_dl_sdu_len);
+  memcpy(&pdcp_pdu_p->data[0], ie->value.choice.RRCContainer.buf, rrc_dl_sdu_len);
 
     if (pdcp_pdu_p != NULL) {
       rlc_status = rlc_data_req(&ctxt
@@ -376,9 +460,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t       instance,
       return ret; 
     } // if pdcp_pdu_p
   
-  } else if (srb_id == 2) {
 
-  }
 #endif
   return 0;
   
@@ -567,7 +649,7 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t     module_idP,
 
   return 0;
 }
-
+    
 
 void init_f1ap_du_ue_inst (void) {
 
diff --git a/openair2/LAYER2/PROTO_AGENT/proto_agent.c b/openair2/LAYER2/PROTO_AGENT/proto_agent.c
index 44194255c63462e270d732ea2d272960022d11db..394ba25814db0b7af04b9d072ca79e54d4bee3f2 100644
--- a/openair2/LAYER2/PROTO_AGENT/proto_agent.c
+++ b/openair2/LAYER2/PROTO_AGENT/proto_agent.c
@@ -59,11 +59,12 @@ int proto_agent_start(mod_id_t mod_id, const cudu_params_t *p)
 {
   int channel_id;
 
+/*
   DevAssert(p->local_ipv4_address);
   DevAssert(p->local_port > 1024); // "unprivileged" port
   DevAssert(p->remote_ipv4_address);
   DevAssert(p->remote_port > 1024); // "unprivileged" port
-  
+  */
   proto_agent[mod_id].mod_id = mod_id;
 
   /* Initialize the channel container */
diff --git a/openair2/RRC/LTE/L2_interface.c b/openair2/RRC/LTE/L2_interface.c
index 6b66349116c5fe7adecf6698cfdea11b05cc4bed..ecf60dc32dc8f9d281714d34a3b37b5cf881bde3 100644
--- a/openair2/RRC/LTE/L2_interface.c
+++ b/openair2/RRC/LTE/L2_interface.c
@@ -150,7 +150,7 @@ mac_rrc_data_req(
       LOG_T(RRC,"[eNB %d] Frame %d CCCH request (Srb_id %d, rnti %x)\n",Mod_idP,frameP, Srb_id,rnti);
 
       if(ue_p->Srb0.Active==0) {
-        LOG_E(RRC,"[eNB %d] CCCH Not active\n",Mod_idP);
+        LOG_E(RRC,"[eNB %d] CCCH Not active (%p, rnti %x)\n",Mod_idP,ue_p,ue_p->rnti);
         return(0);
       }
 
@@ -304,7 +304,29 @@ mac_rrc_data_ind(
   PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_YES, rntiP, frameP, sub_frameP,0);
 
   if((srb_idP & RAB_OFFSET) == CCCH) {
-    LOG_D(RRC,"[eNB %d] Received SDU for CCCH on SRB 0\n",module_idP);
+    LOG_I(RRC,"[eNB %d] Received SDU for CCCH on SRB 0 (%d,%x)\n",module_idP,
+	  ctxt.module_id,ctxt.rnti);
+
+
+      // create a ue_context with rnti as random value, will be updated when Attach Request is received
+    struct rrc_eNB_ue_context_s  *ue_context_p = rrc_eNB_get_next_free_ue_context(&ctxt,
+										  rntiP
+										  );
+    
+    eNB_RRC_UE_t *ue_p = &ue_context_p->ue_context; 
+    SRB_INFO *srb_info_p = &ue_p->Srb0;
+
+      LOG_I(RRC,"Decoding CCCH : inst %d, CC_id %d, ue_context %p (rnti %x), sib_info_p->Rx_buffer.payload_size %d\n",
+	    module_idP,CC_id,ue_p, ue_p->rnti,sdu_lenP);
+      AssertFatal(sdu_lenP <= RRC_BUFFER_SIZE_MAX,
+		  "CCCH message has size %d > %d\n",sdu_lenP,RRC_BUFFER_SIZE_MAX);
+        
+     
+      memcpy(srb_info_p->Rx_buffer.Payload,
+             sduP,
+             sdu_lenP);
+      srb_info_p->Rx_buffer.payload_size = sdu_lenP;
+      srb_info_p->Active = 1;
     
     //    msg("\n******INST %d Srb_info %p, Srb_id=%d****\n\n",Mod_id,Srb_info,Srb_info->Srb_id);
     if (sdu_lenP > 0)  rrc_eNB_decode_ccch(&ctxt, sduP, sdu_lenP, CC_id);
diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c
index e99f8e64b9a49d1e67a8db27c40c9256ece63959..199546f5251d31324b924778a6955d6744b0bbb4 100644
--- a/openair2/RRC/LTE/rrc_eNB.c
+++ b/openair2/RRC/LTE/rrc_eNB.c
@@ -204,7 +204,7 @@ init_SI(
     AssertFatal(carrier->sizeof_SIB1 != 255,"FATAL, RC.rrc[enb_mod_idP].carrier[CC_id].sizeof_SIB1 == 255");
 
   }
-  else if (rrc->node_type != ngran_eNB_DU) {
+  if (rrc->node_type != ngran_eNB_DU) {
     
     carrier->SIB23 = (uint8_t*) malloc16(64);
     AssertFatal(carrier->SIB23!=NULL,"cannot allocate memory for SIB");
@@ -625,9 +625,9 @@ static void init_MBMS(
 #endif
                              ,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)   ) {
+    if ( (RC.rrc[enb_mod_idP]->node_type  != ngran_eNB_CU) ||
+	 (RC.rrc[enb_mod_idP]->node_type  != ngran_ng_eNB_CU) ||
+	 (RC.rrc[enb_mod_idP]->node_type  != ngran_gNB_CU)   ) {
       rrc_rlc_config_asn1_req(&ctxt,
 			      NULL, // SRB_ToAddModList
 			      NULL,   // DRB_ToAddModList
@@ -737,7 +737,7 @@ rrc_eNB_ue_context_stmsi_exist(
 
 //-----------------------------------------------------------------------------
 // return a new ue context structure if ue_identityP, ctxt_pP->rnti not found in collection
-static struct rrc_eNB_ue_context_s*
+struct rrc_eNB_ue_context_s*
 rrc_eNB_get_next_free_ue_context(
   const protocol_ctxt_t* const ctxt_pP,
   const uint64_t               ue_identityP
@@ -775,6 +775,7 @@ rrc_eNB_get_next_free_ue_context(
           PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
     return NULL;
   }
+  return(ue_context_p);
 }
 
 //-----------------------------------------------------------------------------
@@ -1338,7 +1339,7 @@ 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));
-	if (rrc->node_type == ngran_eNB) {
+	if (RC.rrc[ctxt_pP->module_id]->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,
@@ -4782,7 +4783,7 @@ 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);
-  if (rrc->node_type == ngran_eNB) {
+  if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB) {
     rrc_mac_config_req_eNB(
 			   ctxt_pP->module_id,
 			   ue_context_pP->ue_context.primaryCC_id,
@@ -5373,7 +5374,7 @@ 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);
 
-  if (rrc->node_type == ngran_eNB) {
+  if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB) {
     rrc_mac_config_req_eNB(
 			   ctxt_pP->module_id,
 			   ue_context_pP->ue_context.primaryCC_id,
@@ -5649,7 +5650,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
             DRB2LCHAN[i] = (uint8_t) * DRB_configList->list.array[i]->logicalChannelIdentity;
           }
 
-	  if (rrc->node_type == ngran_eNB) {
+	  if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB) {
 	    rrc_mac_config_req_eNB(
 				   ctxt_pP->module_id,
 				   ue_context_pP->ue_context.primaryCC_id,
@@ -5710,7 +5711,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
           LOG_D(RRC,
                 PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ  (DRB) ---> MAC_eNB\n",
                 PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-	  if (rrc->node_type == ngran_eNB) {
+	  if (RC.rrc[ctxt_pP->module_id]->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,
@@ -5854,7 +5855,7 @@ 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));
-	if (rrc->node_type == ngran_eNB) {
+	if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB) {
 	  rrc_mac_config_req_eNB(
 				 ctxt_pP->module_id,
 				 ue_context_pP->ue_context.primaryCC_id,
@@ -7558,8 +7559,8 @@ rrc_enb_task(
       eNB_RRC_UE_t *ue_p = &ue_context_p->ue_context; 
       srb_info_p = &ue_p->Srb0;
 
-      LOG_I(RRC,"Decoding CCCH : inst %d, CC_id %d, ctxt %p, sib_info_p->Rx_buffer.payload_size %d\n",
-	    rrc_inst,CC_id,&ctxt, RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size);
+      LOG_I(RRC,"Decoding CCCH : inst %d, CC_id %d, ue_context %p (rnti %x), sib_info_p->Rx_buffer.payload_size %d\n",
+	    rrc_inst,CC_id,ue_p, ue_p->rnti,RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size);
       if (RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size >= RRC_BUFFER_SIZE_MAX) {
           LOG_I(RRC, "CCCH message has size %d > %d\n",RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size,RRC_BUFFER_SIZE_MAX);
           break;
@@ -7568,6 +7569,7 @@ rrc_enb_task(
              RRC_MAC_CCCH_DATA_IND(msg_p).sdu,
              RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size);
       srb_info_p->Rx_buffer.payload_size = RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size;
+      srb_info_p->Active = 1;
 
       rrc_eNB_decode_ccch(&ctxt, srb_info_p->Rx_buffer.Payload,srb_info_p->Rx_buffer.payload_size, CC_id);
       break;
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/cu.lte.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/cu.lte.conf
index 8d42fcb761c1924dd1a8167b047a093f799aaa70..035add8b3183a395d1e9c8e456b5140d848e2f52 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/cu.lte.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/cu.lte.conf
@@ -24,12 +24,12 @@ eNBs =
     tr_s_preference     = "f1"
 
     local_s_if_name  = "lo";
-    remote_s_address = "127.0.0.1";
-    local_s_address  = "127.0.0.2";
-    local_s_portc    = 60001;
-    remote_s_portc   = 60000;
-    local_s_portd    = 60011;
-    remote_s_portd   = 60010;
+    remote_s_address = "127.0.0.3";
+    local_s_address  = "127.0.0.4";
+    local_s_portc    = 501;
+    remote_s_portc   = 500;
+    local_s_portd    = 601;
+    remote_s_portd   = 600;
 
     ////////// Physical parameters:
 
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/du.lte.band7.10MHz.if4p5.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/du.lte.band7.10MHz.if4p5.conf
index 32d9436f12f1c57ea2f9394290753f3f0fb42819..1956259fdc2ac80a38531f949debcf4aadcbe172 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/du.lte.band7.10MHz.if4p5.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/du.lte.band7.10MHz.if4p5.conf
@@ -13,9 +13,9 @@ eNBs =
     // Tracking area code, 0x0000 and 0xfffe are reserved values
     tracking_area_code  =  "1";
 
-    mobile_country_code =  "001";
+    mobile_country_code =  "208";
 
-    mobile_network_code =  "01";
+    mobile_network_code =  "93";
 
     nr_cellid           = 12345678L
  
@@ -60,13 +60,13 @@ MACRLCs = (
 	num_cc = 1;
 	tr_s_preference = "local_L1";
 	tr_n_preference = "f1";
-    	local_n_if_name  = "vlan203";
-      	remote_n_address = "192.168.203.16";
-    	local_n_address  = "192.168.203.242";
-    	local_n_portc    = 60000;
-    	remote_n_portc   = 60001;
-    	local_n_portd    = 60010;
-    	remote_n_portd   = 60011;
+    	local_n_if_name  = "lo";
+      	remote_n_address = "127.0.0.4";
+    	local_n_address  = "127.0.0.3";
+    	local_n_portc    = 500;
+    	remote_n_portc   = 501;
+    	local_n_portd    = 600;
+    	remote_n_portd   = 601;
         }  
 );
 
@@ -80,8 +80,8 @@ L1s = (
 RUs = (
     {		  
         local_if_name  = "enp4s0f1";
-        local_address  = "192.168.41.3";
-        remote_address = "192.168.41.1";
+        local_address  = "127.0.0.1";
+        remote_address = "127.0.0.2";
         local_portc    = 50000;
         remote_portc   = 50000;
         local_portd    = 50001;