[Issue-ID : ODUHIGH-486] SCTP Port fix at F1 and E2 interface
[o-du/l2.git] / src / ric_stub / ric_stub.c
index e314439..6903071 100644 (file)
 *******************************************************************************/
 
 /* This functions contains main() for ric_app */
-
-#include "ric_stub.h"
+#include "common_def.h"
 #include "ric_stub_sctp.h"
+#include "ric_stub.h"
 
-#define RIC_ID 1
-#define RIC_NAME "ORAN_OAM_RIC"
-#define DU_IP_V4_ADDR "10.0.2.20"
-#define RIC_IP_V4_ADDR "10.0.2.30"
-#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"
-#define DU_PORT 38482
-#define RIC_PORT 38482 
-#define RRC_VER 0
-#define EXT_RRC_VER 5
-#define PLMN_MCC0 3
-#define PLMN_MCC1 1
-#define PLMN_MCC2 1
-#define PLMN_MNC0 4
-#define PLMN_MNC1 8
-#define PLMN_MNC2 0
+#ifdef O1_ENABLE
+#include "CmInterface.h"
+#endif
+
+#ifdef O1_ENABLE
+extern StartupConfig g_cfg;
+#endif
 
 /*******************************************************************
  *
@@ -81,16 +72,18 @@ void init_log()
  *
  * ****************************************************************/
 
-S16 tst()
+uint8_t tst()
 {
    init_log();   
  
-   DU_LOG("\nStarting RIC_STUB");
+   DU_LOG("\nINFO  --> RIC : Starting RIC_STUB");
    /* Read RIC configurations */
    readRicCfg();
 
    /* Start RIC-SCTP to listen on incoming connection */
    sctpCfgReq();
+   /*Sleep is introduced for GDB to increase the waiting time for RIC Configuration from DUAPP*/
+   sleep(1);
    sctpStartReq();
 
    return ROK;
@@ -114,33 +107,64 @@ S16 tst()
 
 void readRicCfg()
 {
-   U32 ipv4_du, ipv4_ric;
+   uint8_t *numDu;
+   uint32_t ipv4_du, ipv4_ric;
 
-   DU_LOG("\nReading RIC configurations");
+   DU_LOG("\nINFO  --> RIC : Reading RIC configurations");
 
-   cmInetAddr((S8*)DU_IP_V4_ADDR, &ipv4_du);
-   cmInetAddr((S8*)RIC_IP_V4_ADDR, &ipv4_ric);
-   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;
+   ricCb.ricCfgParams.ricId = RIC_ID;
+   strcpy(ricCb.ricCfgParams.ricName, RIC_NAME);
+#ifdef O1_ENABLE
+   if( getStartupConfigForStub(&g_cfg) != ROK )
+   {
+      DU_LOG("\nError  -->  RIC : Could not fetch startup "\
+             "configurations from Netconf interface\n");
+      exit(1);
+   }
 
+   cmInetAddr((S8*)g_cfg.DU_IPV4_Addr,  &ipv4_du);
+   cmInetAddr((S8*)g_cfg.RIC_IPV4_Addr, &ipv4_ric);
+   
+   ricCb.ricCfgParams.sctpParams.destCb[0].destIpAddr.ipV4Addr = ipv4_du;
+   ricCb.ricCfgParams.sctpParams.destCb[0].destIpAddr.ipV6Pres = false;
+   ricCb.ricCfgParams.sctpParams.destCb[0].destPort = g_cfg.RIC_Port;
+
+   ricCb.ricCfgParams.sctpParams.localIpAddr.ipV4Addr = ipv4_ric;
+   ricCb.ricCfgParams.sctpParams.localIpAddr.ipV6Pres = false;
+   ricCb.ricCfgParams.sctpParams.e2SctpPort = g_cfg.RIC_Port;
+
+   ricCb.ricCfgParams.sctpParams.numDestNode = 1;
+
+#else
    /* RIC IP Address and Port*/
-   ricCfgParams.sctpParams.ricIpAddr.ipV4Addr = ipv4_ric;
-   ricCfgParams.sctpParams.ricIpAddr.ipV6Pres = false;
-   ricCfgParams.sctpParams.ricPort = RIC_PORT;
+   memset(&ipv4_du, 0, sizeof(uint32_t));
+   cmInetAddr((S8*)LOCAL_IP_RIC, &ipv4_ric);
+   ricCb.ricCfgParams.sctpParams.localIpAddr.ipV4Addr = ipv4_ric;
+   ricCb.ricCfgParams.sctpParams.localIpAddr.ipV6Pres = false;
+   ricCb.ricCfgParams.sctpParams.e2SctpPort = E2_SCTP_PORT;
+
+   ricCb.ricCfgParams.sctpParams.numDestNode = 0;
+   numDu = &ricCb.ricCfgParams.sctpParams.numDestNode;
+   while(*numDu < NUM_E2_ASSOC)
+   {   
+      /* DU IP Address and Port*/
+      memset(&ipv4_du, 0, sizeof(uint32_t));
+      cmInetAddr((S8*)REMOTE_IP_DU[*numDu], &ipv4_du);
+      ricCb.ricCfgParams.sctpParams.destCb[*numDu].destIpAddr.ipV4Addr = ipv4_du;
+      ricCb.ricCfgParams.sctpParams.destCb[*numDu].destIpAddr.ipV6Pres = false;
+      ricCb.ricCfgParams.sctpParams.destCb[*numDu].destPort = E2_SCTP_PORT;
+
+      (*numDu)++;
+   }   
+#endif
 
    /*PLMN*/
-   ricCfgParams.plmn.mcc[0] = PLMN_MCC0;
-   ricCfgParams.plmn.mcc[1] = PLMN_MCC1;
-   ricCfgParams.plmn.mcc[2] = PLMN_MCC2;
-   ricCfgParams.plmn.mnc[0] = PLMN_MNC0;
-   ricCfgParams.plmn.mnc[1] = PLMN_MNC1;
-   ricCfgParams.plmn.mnc[2] = PLMN_MNC2;
+   ricCb.ricCfgParams.plmn.mcc[0] = PLMN_MCC0;
+   ricCb.ricCfgParams.plmn.mcc[1] = PLMN_MCC1;
+   ricCb.ricCfgParams.plmn.mcc[2] = PLMN_MCC2;
+   ricCb.ricCfgParams.plmn.mnc[0] = PLMN_MNC0;
+   ricCb.ricCfgParams.plmn.mnc[1] = PLMN_MNC1;
+   ricCb.ricCfgParams.plmn.mnc[2] = PLMN_MNC2;
   
 } /* End of readCuCfg */
 /**********************************************************************