cuCb.cuCfgParams.sctpParams.f1SctpPort = g_cfg.CU_Port;
cuCb.cuCfgParams.sctpParams.numDestNode = 1;
- cuCb.cuCfgParams.egtpParams.egtpAssoc[0].localIp.ipV4Pres = TRUE;
- cuCb.cuCfgParams.egtpParams.egtpAssoc[0].localIp.ipV4Addr = ipv4_cu;
- cuCb.cuCfgParams.egtpParams.egtpAssoc[0].localPort = CU_EGTP_PORT[0];
- cuCb.cuCfgParams.egtpParams.egtpAssoc[0].destIp.ipV4Pres = TRUE;
- cuCb.cuCfgParams.egtpParams.egtpAssoc[0].destIp.ipV4Addr = ipv4_du;
- cuCb.cuCfgParams.egtpParams.egtpAssoc[0].destPort = DU_EGTP_PORT[0];
+ cuCb.cuCfgParams.egtpParams.localIp.ipV4Pres = TRUE;
+ cuCb.cuCfgParams.egtpParams.localIp.ipV4Addr = ipv4_cu;
+ cuCb.cuCfgParams.egtpParams.localPort = F1_EGTP_PORT;
+ cuCb.cuCfgParams.egtpParams.dstCfg[0].dstIp.ipV4Pres = TRUE;
+ cuCb.cuCfgParams.egtpParams.dstCfg[0].dstIp.ipV4Addr = ipv4_du;
+ cuCb.cuCfgParams.egtpParams.dstCfg[0].dstPort = F1_EGTP_PORT;
cuCb.cuCfgParams.egtpParams.minTunnelId = MIN_TEID;
cuCb.cuCfgParams.egtpParams.currTunnelId = cuCb.cuCfgParams.egtpParams.minTunnelId;
cuCb.cuCfgParams.egtpParams.maxTunnelId = MAX_TEID;
/* CU IP Address and Port*/
memset(&ipv4_du, 0, sizeof(uint32_t));
cmInetAddr((S8*)LOCAL_IP_CU, &ipv4_cu);
+
cuCb.cuCfgParams.sctpParams.localIpAddr.ipV4Addr = ipv4_cu;
cuCb.cuCfgParams.sctpParams.localIpAddr.ipV6Pres = false;
cuCb.cuCfgParams.sctpParams.f1SctpPort = F1_SCTP_PORT;
+ cuCb.cuCfgParams.egtpParams.localIp.ipV4Pres = TRUE;
+ cuCb.cuCfgParams.egtpParams.localIp.ipV4Addr = ipv4_cu;
+ cuCb.cuCfgParams.egtpParams.localPort = F1_EGTP_PORT;
+
cuCb.cuCfgParams.sctpParams.numDestNode = 0;
cuCb.cuCfgParams.egtpParams.numDu = 0;
numDu = 0;
while(numDu < NUM_F1_ASSOC)
{
- /* DU IP Address and Port*/
+ /* DU IP Address */
memset(&ipv4_du, 0, sizeof(uint32_t));
cmInetAddr((S8*)REMOTE_IP_DU[numDu], &ipv4_du);
+
+ /* SCTP Parameters */
cuCb.cuCfgParams.sctpParams.destCb[numDu].destIpAddr.ipV4Addr = ipv4_du;
cuCb.cuCfgParams.sctpParams.destCb[numDu].destIpAddr.ipV6Pres = false;
cuCb.cuCfgParams.sctpParams.destCb[numDu].destPort = F1_SCTP_PORT;
/* EGTP Parameters */
- memset(&ipv4_du, 0, sizeof(uint32_t));
- cmInetAddr((S8*)REMOTE_IP_DU[numDu], &ipv4_du);
- cuCb.cuCfgParams.egtpParams.egtpAssoc[numDu].localIp.ipV4Pres = TRUE;
- cuCb.cuCfgParams.egtpParams.egtpAssoc[numDu].localIp.ipV4Addr = ipv4_cu;
- cuCb.cuCfgParams.egtpParams.egtpAssoc[numDu].localPort = CU_EGTP_PORT[numDu];
- cuCb.cuCfgParams.egtpParams.egtpAssoc[numDu].destIp.ipV4Pres = TRUE;
- cuCb.cuCfgParams.egtpParams.egtpAssoc[numDu].destIp.ipV4Addr = ipv4_du;
- cuCb.cuCfgParams.egtpParams.egtpAssoc[numDu].destPort = DU_EGTP_PORT[numDu];
+ cuCb.cuCfgParams.egtpParams.dstCfg[numDu].dstIp.ipV4Pres = TRUE;
+ cuCb.cuCfgParams.egtpParams.dstCfg[numDu].dstIp.ipV4Addr = ipv4_du;
+ cuCb.cuCfgParams.egtpParams.dstCfg[numDu].dstPort = F1_EGTP_PORT;
(numDu)++;
}
}
else if(ch == 'm')
{
- uint8_t ueId = 1;
- uint8_t duId = 1;
- uint8_t duIdx = 0;
+ uint8_t ueId = 1;
+ uint8_t duId = 0;
+ uint8_t duIdx = 0;
+ DuDb *duDb = NULLP;
+ CuUeCb *ueCb = NULLP;
+
+ DU_LOG("\nEnter DU ID whose UE has to be modified");
+ scanf("%d", &duId);
+ DU_LOG("\nEnter UE ID to be modified");
+ scanf("%d", &ueId);
DU_LOG("\nINFO --> CU_STUB: UE Context Mod for ueId [%d] at DU ID [%d]", \
- ueId, duId );
- DuDb *duDb = NULLP;
- CuUeCb *ueCb = NULLP;
+ ueId, duId);
SEARCH_DU_DB(duIdx, duId, duDb);
if(duDb)
+ {
ueCb = &duDb->ueCb[ueId-1];
- BuildAndSendUeContextModificationReq(duId, ueCb, MODIFY_UE);
+ BuildAndSendUeContextModificationReq(duId, ueCb, MODIFY_UE);
+ }
+ else
+ {
+ DU_LOG("ERROR --> DuDb is NULLP");
+ }
+ continue;
+
+ }
+ /*UE context release command from CU*/
+ else if(ch == 'c')
+ {
+ uint32_t duId, cuUeF1apId, duUeF1apId;
+ uint8_t duIdx = 0;
+ DuDb *duDb = NULLP;
+
+ DU_LOG("\nEnter DU ID on which UE has to be released");
+ scanf("%d", &duId);
+ DU_LOG("\nEnter UE ID to be released");
+ scanf("%d", &duUeF1apId);
+
+ SEARCH_DU_DB(duIdx, duId, duDb);
+ if(duDb)
+ {
+ if(duDb->ueCb[duUeF1apId-1].gnbDuUeF1apId == duUeF1apId)
+ {
+ cuUeF1apId = duDb->ueCb[duUeF1apId-1].gnbCuUeF1apId;
+ DU_LOG("INFO --> CU_STUB: Cu UeId: %d Du UeId:%d",cuUeF1apId, duUeF1apId);
+ BuildAndSendUeContextReleaseCommand(duId, cuUeF1apId, duUeF1apId);
+ }
+ else
+ {
+ DU_LOG("ERROR --> CU_STUB: Du UeId:%d in UeCb mismatch",\
+ duDb->ueCb[duUeF1apId-1].gnbDuUeF1apId);
+ }
+ }
+ sleep(5);
+ continue;
}
}
}