Merge "O1 IP PORT configuration for CM .[Issue-Id: ODUHIGH-196]"
authorHariomGupta(HCL) <hariom.g@hcl.com>
Mon, 15 Feb 2021 08:28:31 +0000 (08:28 +0000)
committerGerrit Code Review <gerrit@o-ran-sc.org>
Mon, 15 Feb 2021 08:28:31 +0000 (08:28 +0000)
1  2 
build/odu/makefile
src/cu_stub/cu_stub.c
src/du_app/du_cfg.c
src/du_app/du_cfg.h
src/ric_stub/ric_stub.c

diff --combined build/odu/makefile
@@@ -73,7 -73,7 +73,7 @@@ endi
  PLTFRM_FLAGS= -UMSPD -DODU -DINTEL_FAPI #-DODU_SLOT_IND_DEBUG_LOG -DEGTP_TEST
  
  ifeq ($(MODE),TDD)
 -   PLTFRM_FLAGS += -DMODE=TDD
 +   PLTFRM_FLAGS += -DNR_TDD
  endif
  ifeq ($(CA_ENABLE),YES)
     PLTFRM_FLAGS += -DCA_ENABLE=YES
@@@ -165,7 -165,7 +165,7 @@@ help
                @echo -e "$(OPTS)    NODE=TEST_STUB       - Mandatory option for cu_stub/ric_stub$(NORM)"
                @echo -e "$(OPTS)    MODE=TDD             - If not specified, MODE=FDD$(NORM)"
                @echo -e "$(OPTS)    PHY=INTEL_L1         - If not specified, Phy stub is used$(NORM)"
 -              @echo -e "$(OPTS)    PHY_MODE=TIMER       - Testing mode for INTEL_L1
 +              @echo -e "$(OPTS)    PHY_MODE=TIMER       - Testing mode for INTEL_L1"
                @echo -e "******************************************************************"
  
  prepare_dirs:
@@@ -204,7 -204,9 +204,9 @@@ du
                $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -f $(COM_BUILD_DIR)/rl.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -f $(COM_BUILD_DIR)/phy_stub.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
+ ifeq ($(O1_ENABLE),YES)
                $(Q)$(MAKE) -f $(COM_BUILD_DIR)/o1_client.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
+ endif
  
  link_du: du
                   $(Q)$(CC1) -g -o $(OBJ_ROOT)/odu/odu -Wl,-R../lib/:. $(OBJ_ROOT)/odu/*.o\
@@@ -223,7 -225,9 +225,9 @@@ clean_odu
                $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -f $(COM_BUILD_DIR)/rl.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -f $(COM_BUILD_DIR)/phy_stub.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
+ ifeq ($(O1_ENABLE),YES)
                $(Q)$(MAKE) -f $(COM_BUILD_DIR)/o1_client.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
+ endif
                $(Q)rm -rf $(OBJ_ROOT)/odu/*
                $(Q)rm -rf $(LIB_ROOT)/odu/*
                $(Q)rm -rf $(BIN_DIR)/odu/*
@@@ -245,6 -249,9 +249,9 @@@ cu
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_rrc.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cm.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
+ ifeq ($(O1_ENABLE),YES)
+               $(Q)$(MAKE) -f $(COM_BUILD_DIR)/o1_client.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
+ endif
  
  clean_cu:
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cu_stub.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_rrc.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cm.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
+ ifeq ($(O1_ENABLE),YES)
+               $(Q)$(MAKE) -f $(COM_BUILD_DIR)/o1_client.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
+ endif
         $(Q)rm -rf $(OBJ_ROOT)/cu_stub/*
         $(Q)rm -rf $(LIB_ROOT)/cu_stub/*
         $(Q)rm -rf $(BIN_DIR)/cu_stub/*
@@@ -273,6 -283,9 +283,9 @@@ ric
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_e2ap.mak OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cm.mak OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
+ ifeq ($(O1_ENABLE),YES)
+               $(Q)$(MAKE) -f $(COM_BUILD_DIR)/o1_client.mak OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
+ endif
  
  clean_ric:
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/ric_stub.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_rrc.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cm.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
+ ifeq ($(O1_ENABLE),YES)
+               $(Q)$(MAKE) -f $(COM_BUILD_DIR)/o1_client.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
+ endif
         $(Q)rm -rf $(OBJ_ROOT)/ric_stub/*
         $(Q)rm -rf $(LIB_ROOT)/ric_stub/*
         $(Q)rm -rf $(BIN_DIR)/ric_stub/*
diff --combined src/cu_stub/cu_stub.c
  #include "cu_stub_egtp.h"
  #include "du_log.h"
  
+ #ifdef O1_ENABLE
+ #include "Config.h"
+ #endif
  #define CU_ID 1
  #define CU_NAME "ORAN_OAM_CU"
- #define DU_IP_V4_ADDR "192.168.130.81"
- #define CU_IP_V4_ADDR "192.168.130.82"
  #define DU_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0001"
  #define CU_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0011"
+ #ifndef O1_ENABLE
+ #define DU_IP_V4_ADDR "192.168.130.81"
+ #define CU_IP_V4_ADDR "192.168.130.82"
  #define DU_PORT 38472
  #define CU_PORT 38472 
+ #endif
  #define DU_EGTP_PORT 39001
  #define CU_EGTP_PORT 39002
  #define RRC_VER 0
  #define PLMN_MNC1 8
  #define PLMN_MNC2 0
  
+ #ifdef O1_ENABLE
+ extern StartupConfig g_cfg;
+ #endif
  /*******************************************************************
   *
   * @brief Handles SCTP notification 
@@@ -64,7 -84,7 +84,7 @@@ void sctpNtfyInd(CmInetSctpNotificatio
  
  void init_log()
  {
 -      openlog("CU_STUB",LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
 +    openlog("CU_STUB",LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
  }
  /*******************************************************************
   *
@@@ -92,7 -112,7 +112,7 @@@ uint8_t tst(
     pthread_attr_t attr;
  
     init_log();   
 -   DU_LOG("\nStarting CU_STUB\n");
 +   DU_LOG("\nINFO   -->  CU_STUB : Starting CU_STUB\n");
  
     /* Start thread to receive console input */
     pthread_attr_init(&attr);
     retVal = pthread_create(&conThrdId, &attr, cuConsoleHandler, NULLP);
     if(retVal != 0)
     {
 -      DU_LOG("\nCU_STUB: Thread creation failed. Cause %d", retVal);
 +      DU_LOG("\nERROR  -->  CU_STUB :  Thread creation failed. Cause %d", retVal);
     }
     pthread_attr_destroy(&attr);
  
@@@ -144,23 -164,38 +164,38 @@@ void readCuCfg(
  {
     uint32_t ipv4_du, ipv4_cu;
  
 -   DU_LOG("\nReading CU configurations");
 +   DU_LOG("\nDEBUG  -->  CU_STUB : Reading CU configurations");
  
+ #ifdef O1_ENABLE
+    if( getStartupConfig(&g_cfg) != ROK )
+    {
+       RETVALUE(RFAILED);
+    }
+    DU_LOG("\nReading CU configurations---");
+    DU_LOG("\nReading CU configurations g_cfg.DU_IPV4_Addr=%s", g_cfg.DU_IPV4_Addr);
+    DU_LOG("\nReading CU configurations g_cfg.CU_IPV4_Addr=%s", g_cfg.CU_IPV4_Addr);
+    cmInetAddr((S8*)g_cfg.DU_IPV4_Addr, &ipv4_du);
+    cmInetAddr((S8*)g_cfg.CU_IPV4_Addr, &ipv4_cu);
+    cuCfgParams.sctpParams.duPort = g_cfg.DU_Port;
+    cuCfgParams.sctpParams.cuPort = g_cfg.CU_Port;
+ #else
     cmInetAddr((S8*)DU_IP_V4_ADDR, &ipv4_du);
     cmInetAddr((S8*)CU_IP_V4_ADDR, &ipv4_cu);
-  
+    cuCfgParams.sctpParams.duPort = DU_PORT;
+    cuCfgParams.sctpParams.cuPort = CU_PORT;
+ #endif
+     
     cuCfgParams.cuId = CU_ID;
     strcpy(cuCfgParams.cuName, CU_NAME);
   
     /* DU IP Address and Port*/
     cuCfgParams.sctpParams.duIpAddr.ipV4Addr = ipv4_du;
     cuCfgParams.sctpParams.duIpAddr.ipV6Pres = false;
-    cuCfgParams.sctpParams.duPort = DU_PORT;
  
     /* CU IP Address and Port*/
     cuCfgParams.sctpParams.cuIpAddr.ipV4Addr = ipv4_cu;
     cuCfgParams.sctpParams.cuIpAddr.ipV6Pres = false;
-    cuCfgParams.sctpParams.cuPort = CU_PORT;
  
     /*PLMN*/
     cuCfgParams.plmn.mcc[0] = PLMN_MCC0;
@@@ -211,7 -246,7 +246,7 @@@ void *cuConsoleHandler(void *args
        if((ch = getchar()) == 'd')
        {
           /* Start Pumping data from CU to DU */
 -         DU_LOG("\nEGTP: Sending DL User Data");
 +         DU_LOG("\nDEBUG  -->  EGTP: Sending DL User Data");
           cuEgtpDatReq();      
        } 
     }
diff --combined src/du_app/du_cfg.c
  #include "BWP-DownlinkCommon.h"
  #include "BWP-UplinkCommon.h"
  
+ #ifdef O1_ENABLE
+ #include "Config.h"
+ extern StartupConfig g_cfg;
+ #endif
  DuCfgParams duCfgParam;
  char encBuf[ENC_BUF_MAX_LEN];
  
@@@ -90,28 -97,35 +97,28 @@@ void FillSlotConfig(
     uint8_t slot = 0;
     uint8_t symbol =0;
     
 -   memset(duCfgParam.macCellCfg.tddCfg.slotCfg, 0, sizeof(duCfgParam.macCellCfg.tddCfg.slotCfg[0][0]*\
 -   MAXIMUM_TDD_PERIODICITY*MAX_SYMB_PER_SLOT));
 +   memset(duCfgParam.macCellCfg.tddCfg.slotCfg, 0, sizeof(duCfgParam.macCellCfg.tddCfg.slotCfg[slot][symbol]* \
 +                         MAX_TDD_PERIODICITY_SLOTS*MAX_SYMB_PER_SLOT));
     
 -   //Filling the DL Slots
 -   for(slot  =0; slot < NUM_DL_SLOTS; slot++)
 +   //Filling the DL Slots and initializing flexi slot
 +   for(slot = 0; slot <= NUM_DL_SLOTS; slot++)
     {
        for(symbol =0; symbol < MAX_SYMB_PER_SLOT; symbol++)
        {
         duCfgParam.macCellCfg.tddCfg.slotCfg[slot][symbol] = DL_SLOT;
        }
     }
 -   
 -   //Filling the Flexi Slot
 -   for(symbol =0; symbol < NUM_DL_SYMBOLS; symbol++)
 -   {
 -      duCfgParam.macCellCfg.tddCfg.slotCfg[GUARD_SLOT_IDX][symbol] = DL_SLOT;
 -   }
 -   duCfgParam.macCellCfg.tddCfg.slotCfg[GUARD_SLOT_IDX][symbol] = GUARD_SLOT;
 -   symbol++;
 -   duCfgParam.macCellCfg.tddCfg.slotCfg[GUARD_SLOT_IDX][symbol] = UL_SLOT;
 -
 -   //Filling the UL Slot
 -   for(slot  = GUARD_SLOT_IDX + 1; slot < MAXIMUM_TDD_PERIODICITY; slot++)
 +  
 +   //Filling UL Slots
 +   for(slot = NUM_DL_SLOTS+1; slot <= NUM_DL_SLOTS+NUM_UL_SLOTS; slot++)
     {
 -      for(symbol =0; symbol < MAX_SYMB_PER_SLOT; symbol++)
 -      {
 +      for(symbol = 0; symbol < MAX_SYMB_PER_SLOT; symbol++)
         duCfgParam.macCellCfg.tddCfg.slotCfg[slot][symbol] = UL_SLOT;
 -      }
 -   }
 +   } 
 +   //Updating Flexi Slot
 +   slot = NUM_DL_SLOTS;
 +   duCfgParam.macCellCfg.tddCfg.slotCfg[slot][12] = FLEXI_SLOT;
 +   duCfgParam.macCellCfg.tddCfg.slotCfg[slot][13] = UL_SLOT;
  
  }
  #endif
@@@ -328,9 -342,14 +335,14 @@@ uint8_t readMacCfg(
   * ****************************************************************/
  uint8_t fillDuPort(uint16_t *duPort)
  {
+ #ifdef O1_ENABLE
+    duPort[F1_INTERFACE]   = g_cfg.DU_Port;
+    duPort[E2_INTERFACE]   = g_cfg.RIC_Port;
+ #else
     duPort[F1_INTERFACE]   = DU_PORT;     /* DU Port idx  0 38472 */
     duPort[E2_INTERFACE]   = RIC_PORT;    /* RIC Port idx 1 38482 */
+ #endif
     return ROK;
  }
  
@@@ -530,9 -549,26 +542,26 @@@ uint8_t readCfg(
     MibParams mib;
     Sib1Params sib1;   
  
+ #ifdef O1_ENABLE
+    if( getStartupConfig(&g_cfg) != ROK )
+    {
+       RETVALUE(RFAILED);
+    }
+    cmInetAddr((S8*)g_cfg.DU_IPV4_Addr, &ipv4_du);
+    cmInetAddr((S8*)g_cfg.CU_IPV4_Addr, &ipv4_cu);
+    cmInetAddr((S8*)g_cfg.RIC_IPV4_Addr, &ipv4_ric);
+    duCfgParam.sctpParams.cuPort = g_cfg.CU_Port;
+    duCfgParam.sctpParams.ricPort = g_cfg.RIC_Port;
+ #else   
     cmInetAddr((S8*)DU_IP_V4_ADDR, &ipv4_du);
     cmInetAddr((S8*)CU_IP_V4_ADDR, &ipv4_cu);
     cmInetAddr((S8*)RIC_IP_V4_ADDR, &ipv4_ric);
+    duCfgParam.sctpParams.cuPort = CU_PORT;
+    duCfgParam.sctpParams.ricPort = RIC_PORT;
+ #endif
     fillDuPort(duCfgParam.sctpParams.duPort);
  
     /* F1 DU IP Address and Port*/
  
     /* F1 CU IP Address and Port*/
     duCfgParam.sctpParams.cuIpAddr.ipV4Addr = ipv4_cu;
-    duCfgParam.sctpParams.cuPort = CU_PORT;
  
     /* Fill RIC Params */
     duCfgParam.sctpParams.ricIpAddr.ipV4Addr = ipv4_ric;
-    duCfgParam.sctpParams.ricPort            = RIC_PORT;
     /* EGTP Parameters */
     duCfgParam.egtpParams.localIp.ipV4Pres = TRUE;
     duCfgParam.egtpParams.localIp.ipV4Addr = ipv4_du;
diff --combined src/du_app/du_cfg.h
  /* MACROS */
  #define DU_INST 0
  #define DU_ID 1
+ #ifndef O1_ENABLE
  #define DU_IP_V4_ADDR "192.168.130.81"
  #define CU_IP_V4_ADDR "192.168.130.82"
  #define RIC_IP_V4_ADDR "192.168.130.80"
  #define DU_PORT 38472
  #define CU_PORT 38472
  #define RIC_PORT 36422         /* using X2 port since E2 port not defined  */
+ #endif
  #define DU_EGTP_PORT  39001
  #define CU_EGTP_PORT  39002
  #define NR_PCI 1
  #define NR_CELL_ID 1
  #define NR_NUMEROLOGY 0
 +
  #define DU_NAME "ORAN_OAM_DU"
  #define CELL_TYPE SMALL
  #define DUPLEX_MODE DUP_MODE_FDD
 +
 +#ifdef NR_TDD
 +#define DUPLEX_MODE DUP_MODE_TDD
 +#endif
 +
  #define DU_TAC 1
  #define PLMN_MCC0 3
  #define PLMN_MCC1 1
diff --combined src/ric_stub/ric_stub.c
  #include "ric_stub_sctp.h"
  #include "du_log.h"
  
+ #ifdef O1_ENABLE
+ #include "Config.h"
+ #endif
  #define RIC_ID 1
  #define RIC_NAME "ORAN_OAM_RIC"
- #define DU_IP_V4_ADDR "192.168.130.81"
- #define RIC_IP_V4_ADDR "192.168.130.80"
  #define DU_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0001"
  #define RIC_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0011"
+ #ifndef O1_ENABLE
+ #define DU_IP_V4_ADDR "192.168.130.81"
+ #define RIC_IP_V4_ADDR "192.168.130.80"
  #define DU_PORT 36422
  #define RIC_PORT 36422
+ #endif
  #define RRC_VER 0
  #define EXT_RRC_VER 5
  #define PLMN_MCC0 3
  #define PLMN_MNC1 8
  #define PLMN_MNC2 0
  
+ #ifdef O1_ENABLE
+ extern StartupConfig g_cfg;
+ #endif
  /*******************************************************************
   *
   * @brief Handles SCTP notification 
@@@ -86,7 -103,7 +103,7 @@@ uint8_t tst(
  {
     init_log();   
   
 -   DU_LOG("\nStarting RIC_STUB");
 +   DU_LOG("\nINFO  --> RIC : Starting RIC_STUB");
     /* Read RIC configurations */
     readRicCfg();
  
@@@ -117,23 -134,36 +134,36 @@@ void readRicCfg(
  {
     uint32_t ipv4_du, ipv4_ric;
  
 -   DU_LOG("\nReading RIC configurations");
 +   DU_LOG("\nINFO  --> RIC : Reading RIC configurations");
  
+ #ifdef O1_ENABLE
+    if( getStartupConfig(&g_cfg) != ROK )
+    {
+       RETVALUE(RFAILED);
+    }
+    cmInetAddr((S8*)g_cfg.DU_IPV4_Addr,  &ipv4_du);
+    cmInetAddr((S8*)g_cfg.RIC_IPV4_Addr, &ipv4_ric);
+    ricCfgParams.sctpParams.duPort = g_cfg.RIC_Port;
+    ricCfgParams.sctpParams.ricPort = g_cfg.RIC_Port;
+ #else
     cmInetAddr((S8*)DU_IP_V4_ADDR, &ipv4_du);
     cmInetAddr((S8*)RIC_IP_V4_ADDR, &ipv4_ric);
-  
+    ricCfgParams.sctpParams.duPort = DU_PORT;
+    ricCfgParams.sctpParams.ricPort = RIC_PORT;
+ #endif
+     
     ricCfgParams.ricId = RIC_ID;
     strcpy(ricCfgParams.ricName, RIC_NAME);
   
     /* DU IP Address and Port*/
     ricCfgParams.sctpParams.duIpAddr.ipV4Addr = ipv4_du;
     ricCfgParams.sctpParams.duIpAddr.ipV6Pres = false;
-    ricCfgParams.sctpParams.duPort = DU_PORT;
  
     /* RIC IP Address and Port*/
     ricCfgParams.sctpParams.ricIpAddr.ipV4Addr = ipv4_ric;
     ricCfgParams.sctpParams.ricIpAddr.ipV6Pres = false;
-    ricCfgParams.sctpParams.ricPort = RIC_PORT;
  
     /*PLMN*/
     ricCfgParams.plmn.mcc[0] = PLMN_MCC0;