diff --git a/openair2/F1AP/f1ap_du_rrc_message_transfer.c b/openair2/F1AP/f1ap_du_rrc_message_transfer.c
index a2febfaa62e34de3e7af29144e627f1febd862bc..b66921526e0628e3e653236176c565c720f30078 100644
--- a/openair2/F1AP/f1ap_du_rrc_message_transfer.c
+++ b/openair2/F1AP/f1ap_du_rrc_message_transfer.c
@@ -34,11 +34,17 @@
 #include "f1ap_encoder.h"
 #include "f1ap_decoder.h"
 #include "f1ap_itti_messaging.h"
+
 #include "f1ap_du_rrc_message_transfer.h"
+
+#include "DL-CCCH-Message.h"
+#include "DL-DCCH-Message.h"
+
 // undefine C_RNTI from
 // openair1/PHY/LTE_TRANSPORT/transport_common.h which
 // replaces in ie->value.choice.C_RNTI, causing
 // a compile error
+
 #undef C_RNTI 
 
 extern f1ap_setup_req_t *f1ap_du_data;
@@ -62,7 +68,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t       instance,
   uint64_t        du_ue_f1ap_id;
   uint64_t        srb_id;
   int             executeDuplication;
-  sdu_size_t      ccch_sdu_len;
+  sdu_size_t      rrc_dl_sdu_len;
   uint64_t        subscriberProfileIDforRFP;
   uint64_t        rAT_FrequencySelectionPriority;
 
@@ -122,14 +128,14 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t       instance,
                              F1AP_ProtocolIE_ID_id_RRCContainer, true);
   // BK: need check
   // create an ITTI message and copy SDU
-  message_p = itti_alloc_new_message (TASK_CU_F1, RRC_MAC_CCCH_DATA_IND);
-  memset (RRC_MAC_CCCH_DATA_IND (message_p).sdu, 0, CCCH_SDU_SIZE);
-  ccch_sdu_len = ie->value.choice.RRCContainer.size;
-  memcpy(RRC_MAC_CCCH_DATA_IND (message_p).sdu, ie->value.choice.RRCContainer.buf,
-         ccch_sdu_len);
-  printf ("RRCContainer(CCCH) :");
-  for (int i=0;i<ie->value.choice.RRCContainer.size;i++) printf("%2x ",RRC_MAC_CCCH_DATA_IND (message_p).sdu[i]);
-
+  //  message_p = itti_alloc_new_message (TASK_CU_F1, RRC_MAC_CCCH_DATA_IND);
+  //  memset (RRC_MAC_CCCH_DATA_IND (message_p).sdu, 0, CCCH_SDU_SIZE);
+  rrc_dl_sdu_len = ie->value.choice.RRCContainer.size;
+  //  memcpy(RRC_MAC_CCCH_DATA_IND (message_p).sdu, ie->value.choice.RRCContainer.buf,
+  //         ccch_sdu_len);
+  printf ("RRCContainer :");
+  for (int i=0;i<ie->value.choice.RRCContainer.size;i++) printf("%2x ",ie->value.choice.RRCContainer.buf[i]);
+  printf("\n");
 
   /* optional */
   /* RAT_FrequencyPriorityInformation */
@@ -147,6 +153,59 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t       instance,
     }
   }
 
+  // decode RRC Container and act on the message type
+  AssertFatal(srb_id<3,"illegal srb_id\n");
+
+  if (srb_id == 0) {
+    DL_CCCH_Message_t* dl_ccch_msg=NULL;
+    asn_dec_rval_t dec_rval;
+    dec_rval = uper_decode(NULL,
+			   &asn_DEF_DL_CCCH_Message,
+			   (void**)&dl_ccch_msg,
+			   ie->value.choice.RRCContainer.buf,
+			   ie->value.choice.RRCContainer.size,0,0);
+    switch (dl_ccch_msg->message.choice.c1.present) {
+      
+    case DL_CCCH_MessageType__c1_PR_NOTHING:
+      LOG_I(RRC, "Received PR_NOTHING on DL-CCCH-Message\n");
+      break;
+      
+    case DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishment:
+      LOG_I(RRC,
+	    "Logical Channel DL-CCCH (SRB0), Received RRCConnectionReestablishment\n");
+      break;
+      
+    case DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishmentReject:
+      LOG_I(RRC,
+	    "Logical Channel DL-CCCH (SRB0), Received RRCConnectionReestablishmentReject\n");
+      break;
+
+    case DL_CCCH_MessageType__c1_PR_rrcConnectionReject:
+      LOG_I(RRC,
+	    "Logical Channel DL-CCCH (SRB0), Received RRCConnectionReject \n");
+      break;
+
+    case DL_CCCH_MessageType__c1_PR_rrcConnectionSetup:
+      LOG_I(RRC,
+	    "Logical Channel DL-CCCH (SRB0), Received RRCConnectionSetup RNTI %x\n");
+      // Get configuration
+
+      break;
+
+    default:
+      AssertFatal(1==0,
+		  "Unknown message\n");
+      break;
+    }
+
+  }
+  else if (srb_id == 1){ 
+
+  }
+
+  else if (srb_id == 2){
+
+  }
   return 0;
   
 }