return ROK;
}
-/*******************************************************************
- *
- * @brief Configures the DU Parameters
- *
- * @details
- *
- * Function : fillDuPort
- *
- * Functionality:
- * - fills the DU Ports.
- *
- * @params[in] duPort array to be filled
- * @return ROK - success
- * RFAILED - failure
- *
- * ****************************************************************/
-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] = F1_SCTP_PORT; /* DU Port idx 0 38472 */
- duPort[E2_INTERFACE] = E2_SCTP_PORT; /* RIC Port idx 1 36421 */
-#endif
- return ROK;
-}
-
/*******************************************************************
*
* @brief Configures the DU Parameters
CmLList *node;
uint8_t srvdCellIdx, bandIdx, sliceIdx, plmnIdx, ranFuncIdx, eventTriggerStyleIdx, reportStyleIdx, tnlAssocIdx;
uint8_t brdcstPlmnIdx, freqBandIdx, srvdPlmnIdx;
- uint32_t ipv4_du, ipv4_cu, ipv4_ric;
MibParams mib;
Sib1Params sib1;
SupportedSliceList *taiSliceSuppLst;
/* Gnb Id */
duCb.gnbId = GNB_ID;
-#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 = F1_SCTP_PORT;
- duCfgParam.sctpParams.ricPort = E2_SCTP_PORT;
-#endif
-
- fillDuPort(duCfgParam.sctpParams.duPort);
-
- /* F1 DU IP Address and Port*/
- duCfgParam.sctpParams.duIpAddr.ipV4Addr = ipv4_du;
-
- /* F1 CU IP Address and Port*/
- duCfgParam.sctpParams.cuIpAddr.ipV4Addr = ipv4_cu;
-
- /* Fill RIC Params */
- duCfgParam.sctpParams.ricIpAddr.ipV4Addr = ipv4_ric;
-
- /* EGTP Parameters */
- duCfgParam.egtpParams.localIp.ipV4Pres = TRUE;
- duCfgParam.egtpParams.localIp.ipV4Addr = ipv4_du;
- duCfgParam.egtpParams.localPort = F1_EGTP_PORT;
- duCfgParam.egtpParams.destIp.ipV4Pres = TRUE;
- duCfgParam.egtpParams.destIp.ipV4Addr = ipv4_cu;
- duCfgParam.egtpParams.destPort = F1_EGTP_PORT;
- duCfgParam.egtpParams.minTunnelId = MIN_TEID;
- duCfgParam.egtpParams.maxTunnelId = MAX_TEID;
-
- duCfgParam.maxUe = 32; //TODO: Check
-
- /* DU Info */
- duCfgParam.duId = DU_ID;
- DU_ALLOC(duCfgParam.duName, sizeof(DU_NAME));
- if(!duCfgParam.duName)
- {
- DU_LOG("\nDEBUG --> DU_APP: readCfg(): Memory allocation failure for DU name");
- return RFAILED;
- }
- strcpy((char*)duCfgParam.duName,DU_NAME);
-
memset(&duCb.e2apDb, 0, sizeof(E2apDb));
- duCb.e2apDb.e2NodeId = DU_ID;
+ duCb.e2apDb.e2NodeId = 1; //Will be removed as part of E2 config parser
duCb.e2apDb.e2TransInfo.transIdCounter = 0;
duCb.e2apDb.numOfTNLAssoc = 1;
return ROK;
}
-#ifdef XML_BASED_CONFIG
/*******************************************************************
*
* @brief Fill SCTP Parameters
* ****************************************************************/
uint8_t parseSctpParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, SctpParams *sctp)
{
- uint8_t max_du_port;
- uint16_t f1_sctp_port;
- uint16_t e2_sctp_port;
+ uint8_t max_du_port = 0;
+ uint16_t f1_sctp_port = 0;
+ uint16_t e2_sctp_port = 0;
memset(sctp, 0, sizeof(SctpParams));
cur = cur->xmlChildrenNode;
while (cur != NULL)
{
+#ifdef O1_ENABLE
+ sctp->duPort[F1_INTERFACE] = g_cfg.DU_Port;
+ sctp->duPort[E2_INTERFACE] = g_cfg.RIC_Port;
+ sctp->cuPort = g_cfg.CU_Port;
+ sctp->ricPort = g_cfg.RIC_Port;
+#else
if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAX_DU_PORT")) && (cur->ns == ns))
{
max_du_port = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
sctp->duPort[E2_INTERFACE] = e2_sctp_port; /* RIC Port idx 1 */
}
}
+
if ((!xmlStrcmp(cur->name, (const xmlChar *)"F1_SCTP_PORT")) && (cur->ns == ns))
{
f1_sctp_port = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
e2_sctp_port = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
}
-#ifdef O1_ENABLE
- sctp->cuPort = g_cfg.CU_Port;
- sctp->ricPort = g_cfg.RIC_Port;
-#else
sctp->cuPort = f1_sctp_port;
sctp->ricPort = e2_sctp_port;
#endif
return ROK;
}
+#ifdef XML_BASED_CONFIG
/*******************************************************************
*
* @brief Fill MIB configuration
return ROK;
}
-/*******************************************************************
- *
- * @brief Fill RRC version
- *
- * @details
- *
- * Function : parseF1RrcVersion
- *
- * Functionality: Fill RRC version
- *
- * @params[in] XML document pointer
- * XML namespace
- * Current node in XML
- * Pointer to structure to be filled
- * @return ROK - success
- * RFAILED - failure
- *
- * ****************************************************************/
-uint8_t parseF1RrcVersion(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,F1RrcVersion *f1RrcVersion)
-{
- memset(f1RrcVersion, 0, sizeof(F1RrcVersion));
- cur = cur->xmlChildrenNode;
- while(cur != NULL)
- {
- if((!xmlStrcmp(cur->name, (const xmlChar *)"RRC_VER")) && (cur->ns == ns))
- {
- strcpy((char*)f1RrcVersion->rrcVer, (char*)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
- }
-
- if((!xmlStrcmp(cur->name, (const xmlChar *)"EXT_RRC_VER")) && (cur->ns == ns))
- {
- f1RrcVersion->extRrcVer = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
- }
- cur = cur -> next;
- }
- return ROK;
-}
-
/*******************************************************************
*
* @brief Fill PLMN ID
#endif
}
-#ifdef XML_BASED_CONFIG
- if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAX_NUM_DRB")) && (cur->ns == ns))
- {
- duCfgParam.maxNumDrb = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
- }
-
- if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAX_NUM_UE_SUPPORTED")) && (cur->ns == ns))
- {
- duCfgParam.maxSupportedUes = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
- }
-
if ((!xmlStrcmp(cur->name, (const xmlChar *)"DU_ID")) && (cur->ns == ns))
{
duCfgParam.duId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
strcpy((char*)duCfgParam.duName, tempDuName);
}
+ if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAX_NUM_DRB")) && (cur->ns == ns))
+ {
+ duCfgParam.maxNumDrb = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+ }
+
+ if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAX_NUM_UE_SUPPORTED")) && (cur->ns == ns))
+ {
+ duCfgParam.maxSupportedUes = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+ }
+
if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAX_NUM_UE")) && (cur->ns == ns))
{
duCfgParam.maxUe = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
duCfgParam.egtpParams.maxTunnelId = duCfgParam.maxNumDrb * duCfgParam.maxSupportedUes;
}
+#ifdef XML_BASED_CONFIG
if ((!xmlStrcmp(cur->name, (const xmlChar *)"MIB_PARAMS")) && (cur->ns == ns))
{
if(parseMibParams(doc, ns, cur, &duCfgParam.mibParams) != ROK)
}
}
- if ((!xmlStrcmp(cur->name, (const xmlChar *)"F1_RRC_VERSION")) && (cur->ns == ns))
- {
- if(parseF1RrcVersion(doc, ns, cur, &duCfgParam.rrcVersion) != ROK)
- {
- return RFAILED;
- }
- }
-
if ((!xmlStrcmp(cur->name, (const xmlChar *)"F1_DU_SRVD_CELL_INFO")) && (cur->ns == ns))
{
if(parseF1DuServedCellInfo(doc, ns, cur, &duCfgParam.srvdCellLst[0]) != ROK)
DU_LOG("Cell Barred %ld\n", mib->cellBarred);
DU_LOG("Intra Frequency Reselection %ld\n", mib->intraFreqReselection);
- f1RrcVersion = &duCfgParam.rrcVersion;
- DU_LOG("\n ** RRC Version ** \n");
- DU_LOG("RRC Version %s\n", f1RrcVersion->rrcVer);
- DU_LOG("Extended RRC Version %d\n", f1RrcVersion->extRrcVer);
-
duSysInfo = &duCfgParam.srvdCellLst[0].duSysInfo;
DU_LOG("\n ** DU System Information ** \n");
DU_LOG("MIB length %d\n", duSysInfo->mibLen);