diff --git a/openair2/GNB_APP/gnb_config.c b/openair2/GNB_APP/gnb_config.c
index 0b31193b8e6af775f917c88e1524492f29f367e0..0cbbbf078ab556ee1de61df98362ee79effa9b97 100644
--- a/openair2/GNB_APP/gnb_config.c
+++ b/openair2/GNB_APP/gnb_config.c
@@ -1103,6 +1103,35 @@ static int read_du_cell_info(configmodule_interface_t *cfg,
   return 1;
 }
 
+static f1ap_tdd_info_t read_tdd_config(const NR_ServingCellConfigCommon_t *scc)
+{
+  const NR_FrequencyInfoDL_t *dl = scc->downlinkConfigCommon->frequencyInfoDL;
+  f1ap_tdd_info_t tdd = {
+    .freqinfo.arfcn = dl->absoluteFrequencyPointA,
+    .freqinfo.band = *dl->frequencyBandList.list.array[0],
+    .tbw.scs = dl->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing,
+    .tbw.nrb = dl->scs_SpecificCarrierList.list.array[0]->carrierBandwidth,
+  };
+  return tdd;
+}
+
+static f1ap_fdd_info_t read_fdd_config(const NR_ServingCellConfigCommon_t *scc)
+{
+  const NR_FrequencyInfoDL_t *dl = scc->downlinkConfigCommon->frequencyInfoDL;
+  const NR_FrequencyInfoUL_t *ul = scc->uplinkConfigCommon->frequencyInfoUL;
+  f1ap_fdd_info_t fdd = {
+    .dl_freqinfo.arfcn = dl->absoluteFrequencyPointA,
+    .ul_freqinfo.arfcn = *ul->absoluteFrequencyPointA,
+    .dl_tbw.scs = dl->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing,
+    .ul_tbw.scs = ul->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing,
+    .dl_tbw.nrb = dl->scs_SpecificCarrierList.list.array[0]->carrierBandwidth,
+    .ul_tbw.nrb = ul->scs_SpecificCarrierList.list.array[0]->carrierBandwidth,
+    .dl_freqinfo.band = *dl->frequencyBandList.list.array[0],
+    .ul_freqinfo.band = *ul->frequencyBandList->list.array[0],
+  };
+  return fdd;
+}
+
 f1ap_setup_req_t *RC_read_F1Setup(uint64_t id,
                                          const char *name,
                                          const f1ap_served_cell_info_t *info,
@@ -1128,27 +1157,14 @@ f1ap_setup_req_t *RC_read_F1Setup(uint64_t id,
         req->cell[0].info.nr_cellid);
 
   req->cell[0].info.nr_pci = *scc->physCellId;
-  struct NR_FrequencyInfoDL *frequencyInfoDL = scc->downlinkConfigCommon->frequencyInfoDL;
   if (scc->tdd_UL_DL_ConfigurationCommon) {
     LOG_I(GNB_APP, "ngran_DU: Configuring Cell %d for TDD\n", 0);
     req->cell[0].info.mode = F1AP_MODE_TDD;
-    f1ap_tdd_info_t *tdd = &req->cell[0].info.tdd;
-    tdd->freqinfo.arfcn = frequencyInfoDL->absoluteFrequencyPointA;
-    tdd->tbw.scs = frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing;
-    tdd->tbw.nrb = frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth;
-    tdd->freqinfo.band = *frequencyInfoDL->frequencyBandList.list.array[0];
+    req->cell[0].info.tdd = read_tdd_config(scc);
   } else {
     LOG_I(GNB_APP, "ngran_DU: Configuring Cell %d for FDD\n", 0);
     req->cell[0].info.mode = F1AP_MODE_FDD;
-    f1ap_fdd_info_t *fdd = &req->cell[0].info.fdd;
-    fdd->dl_freqinfo.arfcn = frequencyInfoDL->absoluteFrequencyPointA;
-    fdd->ul_freqinfo.arfcn = *scc->uplinkConfigCommon->frequencyInfoUL->absoluteFrequencyPointA;
-    fdd->dl_tbw.scs = frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing;
-    fdd->ul_tbw.scs = scc->uplinkConfigCommon->frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing;
-    fdd->dl_tbw.nrb = frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth;
-    fdd->ul_tbw.nrb = scc->uplinkConfigCommon->frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth;
-    fdd->dl_freqinfo.band = *frequencyInfoDL->frequencyBandList.list.array[0];
-    fdd->ul_freqinfo.band = *scc->uplinkConfigCommon->frequencyInfoUL->frequencyBandList->list.array[0];
+    req->cell[0].info.fdd = read_fdd_config(scc);
   }
 
   req->cell[0].info.measurement_timing_information = "0";