# The Jenkins job requires a tag to build the Docker image.
# Global-JJB script assumes this file is in the repo root.
---
-tag: 7.0.3
+tag: 7.0.4
| **Date** | **Ver.** | **Author** | **Comment** |
| | | | |
+--------------------+--------------------+--------------------+--------------------+
-|2022-12-15 | 7.0.2 | Radisys, | G release |
+|2022-12-15 | 7.0.3 | Radisys, | G release |
| | | HCL Technologies | |
| | | Ltd. | |
+--------------------+--------------------+--------------------+--------------------+
| | |
+--------------------------------------+------------------------------------------+
| **Repo/commit-ID** |o-du/l2/ |
-| |I05be329b84ec8c0b14e362976ef49f1b15315bec |
-| | |
+| |I18c6f314f9a927ae49db92e4f9b0e4a3113f3bdb |
+--------------------------------------+------------------------------------------+
| **Release designation** | G release |
| | |
The call flow between O-DU High and CU Stub can be achieved by executing docker containers.
- Pull the last built docker images:
- - docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:7.0.3
- - docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:7.0.3
+ - docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:7.0.4
+ - docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:7.0.4
- Run CU Stub docker:
- docker run -it --privileged --net=host --entrypoint bash
- nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:7.0.3
+ nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:7.0.4
- ./cu_stub
- Run ODU docker:
- docker run -it --privileged --net=host --entrypoint bash
- nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:7.0.3
+ nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:7.0.4
- ./odu
---
distribution_type: container
-container_release_tag: 7.0.3
+container_release_tag: 7.0.4
container_pull_registry: nexus.o-ran-sc.org:10004
container_push_registry: nexus.o-ran-sc.org:10002
project: o-du-l2
-ref: 2430b6f8a31218e1902bfdf8f96ed479cceb632e
+ref: 021ed9015df5ec5b3b97a449d2c5e14e2fa7c99c
containers:
- name: o-du-l2
-version: 7.0.3
+version: 7.0.4
---
distribution_type: container
-container_release_tag: 7.0.3
+container_release_tag: 7.0.4
container_pull_registry: nexus.o-ran-sc.org:10004
container_push_registry: nexus.o-ran-sc.org:10002
project: o-du-l2
-ref: 2430b6f8a31218e1902bfdf8f96ed479cceb632e
+ref: 021ed9015df5ec5b3b97a449d2c5e14e2fa7c99c
containers:
- name: o-du-l2-cu-stub
-version: 7.0.3
+version: 7.0.4
uint8_t buildPlmnId(Plmn plmn, uint8_t *buf);
uint16_t convertScsEnumValToScsVal(uint8_t scsEnumValue);
uint8_t convertScsValToScsEnum(uint32_t num);
+uint8_t convertScsPeriodicityToEnum(uint32_t num);
uint8_t SGetSBufNewForDebug(char *file, const char *func, int line, Region region, Pool pool, Data **ptr, Size size);
uint8_t SPutSBufNewForDebug(char *file, const char *func, int line, Region region, Pool pool, Data *ptr, Size size);
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)++;
}
#ifndef O1_ENABLE
#define LOCAL_IP_CU "192.168.130.82"
-#define F1_SCTP_PORT 38472
+#define F1_SCTP_PORT 38472 /* As per the spec 38.472, the registered port number for F1AP is 38472 */
#define NUM_F1_ASSOC 1
#define REMOTE_IP_DU (char*[]){"192.168.130.81", "192.168.130.83"}
#endif
-#define DU_EGTP_PORT (int[]){39001, 39002}
-#define CU_EGTP_PORT (int[]){39003, 39004}
+#define F1_EGTP_PORT 2152 /* As per the spec 29.281, the registered port number for GTP-U is 2152 */
#define RRC_VER 0
#define EXT_RRC_VER 5
memcpy(&egtpCb.egtpCfg, &cuCb.cuCfgParams.egtpParams, sizeof(CuEgtpParams));
+ egtpCb.localAddr.address = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.localIp.ipV4Addr);
+ egtpCb.localAddr.port = egtpCb.egtpCfg.localPort;
+
for(destIdx=0; destIdx < egtpCb.egtpCfg.numDu; destIdx++)
{
- egtpCb.recvTptSrvr.addr.address = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.egtpAssoc[destIdx].localIp.ipV4Addr);
- egtpCb.recvTptSrvr.addr.port = EGTP_RECVR_PORT;
-
egtpCb.dstCb[destIdx].duId = destIdx+1;
- egtpCb.dstCb[destIdx].dstIp = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.egtpAssoc[destIdx].destIp.ipV4Addr);
- egtpCb.dstCb[destIdx].dstPort = egtpCb.egtpCfg.egtpAssoc[destIdx].destPort;
- egtpCb.dstCb[destIdx].sendTptSrvr.addr.address = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.egtpAssoc[destIdx].localIp.ipV4Addr);
- egtpCb.dstCb[destIdx].sendTptSrvr.addr.port = egtpCb.egtpCfg.egtpAssoc[destIdx].localPort;
+ egtpCb.dstCb[destIdx].dstAddr.address = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.dstCfg[destIdx].dstIp.ipV4Addr);
+ egtpCb.dstCb[destIdx].dstAddr.port = egtpCb.egtpCfg.dstCfg[destIdx].dstPort;
egtpCb.dstCb[destIdx].numTunn = 0;
ret = cmHashListInit(&(egtpCb.dstCb[destIdx].teIdLst), 1024, sizeof(EgtpTeIdCb), FALSE, CM_HASH_KEYTYPE_UINT32_MOD, CU_APP_MEM_REG, CU_POOL);
DU_LOG("\nINFO --> EGTP : Received open server request");
sockType = CM_INET_DGRAM;
- if((ret = (cmInetSocket(sockType, &(egtpCb.recvTptSrvr.sockFd), protType))) != ROK)
+ if((ret = (cmInetSocket(sockType, &(egtpCb.sockFd), protType))) != ROK)
{
DU_LOG("\nERROR --> EGTP : Failed to open UDP socket");
return RFAILED;
}
- ret = cmInetBind(&(egtpCb.recvTptSrvr.sockFd), &(egtpCb.recvTptSrvr.addr));
+ ret = cmInetBind(&(egtpCb.sockFd), &(egtpCb.localAddr));
if(ret != ROK)
{
DU_LOG("\nERROR --> EGTP : Failed to bind socket");
return RFAILED;
}
-
- for(destIdx=0; destIdx < egtpCb.egtpCfg.numDu; destIdx++)
- {
- if(ret = (cmInetSocket(sockType, &(egtpCb.dstCb[destIdx].sendTptSrvr.sockFd), protType)) != ROK)
- {
- DU_LOG("\nERROR --> EGTP : Failed to open UDP socket");
- return RFAILED;
- }
- ret = cmInetBind(&(egtpCb.dstCb[destIdx].sendTptSrvr.sockFd), &(egtpCb.dstCb[destIdx].sendTptSrvr.addr));
- if(ret != ROK)
- {
- DU_LOG("\nERROR --> EGTP : Failed to bind socket");
- return RFAILED;
- }
-
- /* TODO: set socket options */
-
- DU_LOG("\nINFO --> EGTP : Receiver socket[%d] and Sender socket[%d] open", egtpCb.recvTptSrvr.sockFd.fd,\
- egtpCb.dstCb[destIdx].sendTptSrvr.sockFd.fd);
- }
+ DU_LOG("\nINFO --> EGTP : Socket[%d] is open", egtpCb.sockFd.fd);
return ROK;
} /* cuEgtpSrvOpenReq */
ipv4Hdr.length = CM_IPV4_HDRLEN + mLen;
ipv4Hdr.hdrVer = 0x45;
ipv4Hdr.proto = 1;
- ipv4Hdr.srcAddr = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.egtpAssoc[duId-1].localIp.ipV4Addr);
- ipv4Hdr.destAddr = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.egtpAssoc[duId-1].destIp.ipV4Addr);
+ ipv4Hdr.srcAddr = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.localIp.ipV4Addr);
+ ipv4Hdr.destAddr = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.dstCfg[duId-1].dstIp.ipV4Addr);
/* Packing IPv4 header into buffer */
S16 ret, cnt, idx;
S16 ret;
MsgLen txLen;
CmInetMemInfo info;
- CmInetAddr dstAddr;
info.region = CU_APP_MEM_REG;
info.pool = CU_POOL;
- dstAddr.port = EGTP_RECVR_PORT;
- dstAddr.address = egtpCb.dstCb[duId-1].dstIp;
-
- ret = cmInetSendMsg(&(egtpCb.dstCb[duId-1].sendTptSrvr.sockFd), &dstAddr, &info, mBuf, &txLen, CM_INET_NO_FLAG);
+ ret = cmInetSendMsg(&(egtpCb.sockFd), &egtpCb.dstCb[duId-1].dstAddr, &info, mBuf, &txLen, CM_INET_NO_FLAG);
if(ret != ROK && ret != RWOULDBLOCK)
{
DU_LOG("\nERROR --> EGTP : Message send failure");
#ifndef __CU_STUB_EGTP_H__
#define __CU_STUB_EGTP_H__
-#define EGTP_RECVR_PORT 2152 /* As per the spec 29.281, the registered port number for GTP-U is 2152 */
#define EGTP_TNL_MGMT_ADD 1
#define EGTP_TNL_MGMT_MOD 2
#define EGTP_TNL_MGMT_DEL 3
uint32_t remTeid;
}EgtpTnlEvt;
-typedef struct egtpTptSrvr
-{
- CmInetAddr addr;
- CmInetFd sockFd; /* Socket file descriptor */
-}EgtpTptSrvr;
-
typedef struct EgtpTeIdCb
{
uint32_t teId; /* Local tunnel id */
typedef struct egtpDstCb
{
uint32_t duId;
- CmInetIpAddr dstIp; /* destination IP */
- uint16_t dstPort; /* Remote port that sends data */
- EgtpTptSrvr sendTptSrvr; /* Transport server for sending UDP msg to */
+ CmInetAddr dstAddr;
uint32_t numTunn; /* Number of tunnels */
CmHashListCp teIdLst; /* Tunnel Id list for this destination */
}EgtpDstCb;
-typedef struct egtpAssoc
+typedef struct egtpDstCfg
{
- SctpIpAddr localIp;
- uint16_t localPort;
- SctpIpAddr destIp;
- uint16_t destPort;
-}EgtpAssoc;
+ SctpIpAddr dstIp;
+ uint16_t dstPort;
+}EgtpDstCfg;
typedef struct cuEgtpParams
{
uint32_t minTunnelId;
uint32_t maxTunnelId;
uint8_t numDu;
- EgtpAssoc egtpAssoc[MAX_DU_SUPPORTED];
+ SctpIpAddr localIp;
+ uint16_t localPort;
+ EgtpDstCfg dstCfg[MAX_DU_SUPPORTED];
}CuEgtpParams;
typedef struct egtpGlobalCb
{
CuEgtpParams egtpCfg; /* EGTP configuration */
- EgtpTptSrvr recvTptSrvr; /* Transport server for receiving UDP msg */
+ CmInetAddr localAddr;
+ CmInetFd sockFd; /* Socket file descriptor */
uint8_t numDu;
EgtpDstCb dstCb[MAX_DU_SUPPORTED]; /* Destination endpoint */
uint8_t gCntPdu[MAX_TEID+1]; /* Maintaining PDU count for each bearer */
uint32_t *timeoutPtr;
Buffer *egtpBuf;
MsgLen egtpBufLen;
- CmInetAddr egtpFromAddr;
CmInetMemInfo memInfo;
sctpSockPollParams f1PollParams;
uint64_t numMsgRcvd = 0;
+ CmInetAddr fromAddr;
memset(&f1PollParams, 0, sizeof(sctpSockPollParams));
}
/* Receiving EGTP data */
- for(destIdx = 0; destIdx < egtpCb.numDu; destIdx++)
+ egtpBufLen = -1;
+ ret = cmInetRecvMsg(&(egtpCb.sockFd), &fromAddr, &memInfo, &egtpBuf, &egtpBufLen, CM_INET_NO_FLAG);
+ if(ret == ROK && egtpBuf != NULLP)
{
-
- egtpFromAddr.port = egtpCb.dstCb[destIdx].dstPort;
- egtpFromAddr.address = egtpCb.dstCb[destIdx].dstIp;
- egtpBufLen = -1;
- ret = cmInetRecvMsg(&(egtpCb.recvTptSrvr.sockFd), &egtpFromAddr, &memInfo, &egtpBuf, &egtpBufLen, CM_INET_NO_FLAG);
- if(ret == ROK && egtpBuf != NULLP)
+ for(destIdx = 0; destIdx < egtpCb.numDu; destIdx++)
{
- DU_LOG("\nINFO --> EGTP : Received UL Message [%ld] from DUid %d\n", numMsgRcvd+1, egtpCb.dstCb[destIdx].duId);
- numMsgRcvd++;
- //ODU_PRINT_MSG(egtpBuf, 0 ,0);
- cuEgtpHdlRecvMsg(egtpBuf);
+ if((fromAddr.port == egtpCb.dstCb[destIdx].dstAddr.port) && (fromAddr.address == egtpCb.dstCb[destIdx].dstAddr.address))
+ {
+ DU_LOG("\nINFO --> EGTP : Received UL Message [%ld] from DU Id [%d]\n", numMsgRcvd+1, egtpCb.dstCb[destIdx].duId);
+ numMsgRcvd++;
+ //ODU_PRINT_MSG(egtpBuf, 0 ,0);
+ cuEgtpHdlRecvMsg(egtpBuf);
+ break;
+ }
}
}
/* EGTP Parameters */
duCfgParam.egtpParams.localIp.ipV4Pres = TRUE;
duCfgParam.egtpParams.localIp.ipV4Addr = ipv4_du;
- duCfgParam.egtpParams.localPort = DU_EGTP_PORT;
+ duCfgParam.egtpParams.localPort = F1_EGTP_PORT;
duCfgParam.egtpParams.destIp.ipV4Pres = TRUE;
duCfgParam.egtpParams.destIp.ipV4Addr = ipv4_cu;
- duCfgParam.egtpParams.destPort = CU_EGTP_PORT;
+ duCfgParam.egtpParams.destPort = F1_EGTP_PORT;
duCfgParam.egtpParams.minTunnelId = MIN_TEID;
duCfgParam.egtpParams.maxTunnelId = MAX_TEID;
#define CU_IP_V4_ADDR "192.168.130.82"
#define RIC_IP_V4_ADDR "192.168.130.80"
-#define F1_SCTP_PORT 38472
+#define F1_SCTP_PORT 38472 /* As per the spec 38.472, the registered port number for F1AP is 38472 */
#define E2_SCTP_PORT 36421
#endif
-#define DU_EGTP_PORT 39001
-#define CU_EGTP_PORT 39003
+#define F1_EGTP_PORT 2152 /* As per the spec 29.281, the registered port number for GTP-U is 2152 */
#define NR_PCI 1
#define NR_CELL_ID 1
memcpy(&egtpCb.egtpCfg, &egtpCfg, sizeof(EgtpConfig));
- egtpCb.recvTptSrvr.addr.address = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.localIp.ipV4Addr);
- egtpCb.recvTptSrvr.addr.port = EGTP_RECVR_PORT;
+ egtpCb.localAddr.address = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.localIp.ipV4Addr);
+ egtpCb.localAddr.port = egtpCb.egtpCfg.localPort;
- egtpCb.dstCb.dstIp = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.destIp.ipV4Addr);
- egtpCb.dstCb.dstPort = egtpCb.egtpCfg.destPort;
- egtpCb.dstCb.sendTptSrvr.addr.address = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.localIp.ipV4Addr);
- egtpCb.dstCb.sendTptSrvr.addr.port = egtpCb.egtpCfg.localPort;
+ egtpCb.dstCb.dstAddr.address = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.destIp.ipV4Addr);
+ egtpCb.dstCb.dstAddr.port = egtpCb.egtpCfg.destPort;
egtpCb.dstCb.numTunn = 0;
ret = cmHashListInit(&(egtpCb.dstCb.teIdLst), 1024, sizeof(EgtpTeIdCb), FALSE, CM_HASH_KEYTYPE_UINT32_MOD, DU_APP_MEM_REGION, DU_POOL);
DU_LOG("\nDEBUG --> EGTP : Received EGTP open server request");
sockType = CM_INET_DGRAM;
- ret = egtpSrvOpenPrc(sockType, &(egtpCb.recvTptSrvr));
- /* Opening and Binding receiver socket */
+ ret = egtpSrvOpenPrc(sockType);
+ /* Opening and Binding receiver socket */
if(ret != ROK)
{
DU_LOG("\nERROR --> EGTP : Failed while opening receiver transport server");
return ret;
}
- /* Opening and Binding sender socket */
- ret = egtpSrvOpenPrc(sockType, &(egtpCb.dstCb.sendTptSrvr));
- if(ret != ROK)
- {
- DU_LOG("\nERROR --> EGTP : Failed while opening sender transport server");
- return ret;
- }
- DU_LOG("\nDEBUG --> EGTP : Receiver socket[%d] and Sender socket[%d] open", egtpCb.recvTptSrvr.sockFd.fd,\
- egtpCb.dstCb.sendTptSrvr.sockFd.fd);
+ DU_LOG("\nDEBUG --> EGTP : Socket [%d] is open", egtpCb.sockFd.fd);
/* Start Socket polling */
memset(&egtpPst, 0, sizeof(egtpPst));
*
* ****************************************************************/
-uint8_t egtpSrvOpenPrc(uint8_t sockType, EgtpTptSrvr *server)
+uint8_t egtpSrvOpenPrc(uint8_t sockType)
{
S8 ret=ROK;
- ret = cmInetSocket(sockType, &(server->sockFd), protType);
+ ret = cmInetSocket(sockType, &(egtpCb.sockFd), protType);
if(ret != ROK)
{
DU_LOG("\nERROR --> EGTP : Failed to open UDP socket");
return ret;
}
- ret = cmInetBind(&(server->sockFd), &(server->addr));
+ ret = cmInetBind(&(egtpCb.sockFd), &(egtpCb.localAddr));
if(ret != ROK)
{
DU_LOG("\nERROR --> EGTP : Failed to bind socket");
uint8_t ret;
uint16_t txLen;
CmInetMemInfo info;
- CmInetAddr dstAddr;
static uint64_t numDataSent = 0;
info.region = DU_APP_MEM_REGION;
info.pool = DU_POOL;
- dstAddr.port = EGTP_RECVR_PORT;
- dstAddr.address = egtpCb.dstCb.dstIp;
-
- ret = cmInetSendMsg(&(egtpCb.dstCb.sendTptSrvr.sockFd), &dstAddr, &info, \
- mBuf, (int16_t *)&txLen, CM_INET_NO_FLAG);
+ ret = cmInetSendMsg(&egtpCb.sockFd, &egtpCb.dstCb.dstAddr, &info, mBuf, (int16_t *)&txLen, CM_INET_NO_FLAG);
if(ret != ROK && ret != RWOULDBLOCK)
{
DU_LOG("\nERROR --> EGTP : Failed sending the message");
uint8_t ret; /* Return value */
uint16_t bufLen; /* Length of received buffer */
Buffer *recvBuf; /* Received buffer */
- CmInetAddr fromAddr; /* Egtp data sender address */
CmInetMemInfo memInfo; /* Buffer allocation info */
memInfo.region = DU_APP_MEM_REGION;
memInfo.pool = DU_POOL;
- fromAddr.port = egtpCb.dstCb.dstPort;
- fromAddr.address = egtpCb.dstCb.dstIp;
-
while(true)
{
bufLen = -1;
- ret = cmInetRecvMsg(&(egtpCb.recvTptSrvr.sockFd), &fromAddr, &memInfo, \
- &recvBuf, (int16_t *)&bufLen, CM_INET_NO_FLAG);
+ ret = cmInetRecvMsg(&egtpCb.sockFd, &egtpCb.dstCb.dstAddr, &memInfo, &recvBuf, (int16_t *)&bufLen, CM_INET_NO_FLAG);
if(ret == ROK && recvBuf != NULLP)
{
DU_LOG("\nDEBUG --> EGTP : Received DL Message[%ld]\n", gDlDataRcvdCnt + 1);
uint8_t unpackEgtpSrvOpenReq(EgtpSrvOpenReq func, Pst *pst, Buffer *mBuf);
uint8_t protType;
-typedef struct egtpTptSrvr
-{
- CmInetAddr addr;
- CmInetFd sockFd; /* Socket file descriptor */
-}EgtpTptSrvr;
-
typedef struct EgtpTeIdCb
{
uint32_t teId; /* Local tunnel id */
typedef struct egtpDstCb
{
- CmInetIpAddr dstIp; /* destination IP */
- uint16_t dstPort; /* destination port that sends data */
- EgtpTptSrvr sendTptSrvr; /* Transport server for sending UDP msg to */
+ CmInetAddr dstAddr; /* Destination Server address */
uint32_t numTunn; /* Number of tunnels */
CmHashListCp teIdLst; /* Tunnel Id list for this destination */
}EgtpDstCb;
typedef struct egtpGlobalCb
{
EgtpConfig egtpCfg; /* EGTP configuration */
- EgtpTptSrvr recvTptSrvr; /* Transport server for receiving UDP msg */
+ CmInetAddr localAddr; /* Local Server address */
+ CmInetFd sockFd; /* Socket file descriptor */
EgtpDstCb dstCb; /* Destination endpoint */
}EgtpGlobalCb;
uint8_t egtpFillRspPst(Pst *pst, Pst *rspPst);
uint8_t egtpCfgReq(Pst *pst, EgtpConfig egtpCfg);
uint8_t egtpSrvOpenReq(Pst *pst);
-uint8_t egtpSrvOpenPrc(uint8_t sockType, EgtpTptSrvr *server);
+uint8_t egtpSrvOpenPrc(uint8_t sockType);
uint8_t egtpTnlMgmtReq(Pst *pst, EgtpTnlEvt tnlEvt);
uint8_t egtpTnlAdd(EgtpTnlEvt tnlEvt);
uint8_t egtpTnlMod(EgtpTnlEvt tnlEvt);
#include "du_mgr_main.h"
#include "du_sctp.h"
#include "du_egtp.h"
+#include "du_cell_mgr.h"
+#include "du_f1ap_msg_hdl.h"
#ifdef O1_ENABLE
#define MAX_SFN_VALUE 1023
#define NR_PCI 1
#define SLOT_DELAY 3
-#define NUM_DRB_TO_PUMP_DATA 3
+#define NUM_DRB_TO_PUMP_DATA 2
#define NUM_UL_PACKETS 1
/*UE Ids for RACH IND*/
while(counter)
{
/* Start Pumping data from PHY stub to DU */
- for(ueIdx=0; ueIdx < MAX_NUM_UE; ueIdx++)
+ for(ueIdx=0; ueIdx < phyDb.ueDb.numActvUe; ueIdx++)
{
for(drbIdx = 0; drbIdx < NUM_DRB_TO_PUMP_DATA; drbIdx++) //Number of DRB times the loop will run
{
#define LOCAL_IP_RIC "192.168.130.80"
#define E2_SCTP_PORT 36421
-#define NUM_E2_ASSOC 1
+#define NUM_E2_ASSOC 1
#define REMOTE_IP_DU (char*[]){"192.168.130.81", "192.168.130.83"}
#endif