#include "du_app_mac_inf.h"
#include "du_cfg.h"
#include "du_egtp.h"
+#include "du_app_rlc_inf.h"
+#include "du_mgr.h"
#include "du_utils.h"
-/* Global variable declaration */
-EgtpGlobalCb egtpCb;
/**************************************************************************
* @brief Task Initiation callback function.
return ROK;
}
+#ifdef CALL_FLOW_DEBUG_LOG
+/**************************************************************************
+* @brief Function prints the src dest and msg reached to egtp.
+*
+* @details
+*
+* Function : callFlowEgtpActvTsk
+*
+* Functionality:
+* Function prints the src dest and msg reached to egtp.
+*
+* @param[in] Pst *pst, Post structure of the primitive.
+*
+* @return void
+*
+***************************************************************************/
+
+void callFlowEgtpActvTsk(Pst *pst)
+{
+
+ char sourceTask[50];
+ char destTask[50]="ENTEGTP";
+ char message[100];
+
+ switch(pst->srcEnt)
+ {
+ case ENTDUAPP:
+ {
+ strcpy(sourceTask,"ENTDUAPP");
+ switch(pst->event)
+ {
+ case EVTCFGREQ:
+ {
+ strcpy(message,"EVTCFGREQ");
+ break;
+ }
+ case EVTSRVOPENREQ:
+ {
+ strcpy(message,"EVTSRVOPENREQ");
+ break;
+ }
+ case EVTTNLMGMTREQ:
+ {
+ strcpy(message,"EVTTNLMGMTREQ");
+ break;
+ }
+ default:
+ {
+ strcpy(message,"Invalid Event");
+ break;
+ }
+ }
+ break;
+ }
+ case ENTEGTP:
+ {
+ strcpy(sourceTask,"ENTEGTP");
+ switch(pst->event)
+ {
+ case EVTSTARTPOLL:
+ {
+ strcpy(message,"EVTSTARTPOLL");
+ break;
+ }
+ default:
+ {
+ strcpy(message,"Invalid Event");
+ break;
+ }
+ }
+ break;
+ }
+ case ENTRLC:
+ {
+ strcpy(sourceTask,"ENTRLC");
+ switch(pst->event)
+ {
+ case EVTDATIND:
+ {
+ strcpy(message,"EVTDATIND");
+ break;
+ }
+ default:
+ {
+ strcpy(message,"Invalid Event");
+ break;
+ }
+ }
+ break;
+ }
+ default:
+ {
+ strcpy(sourceTask,"Invalid Source Entity Id");
+ }
+ }
+ DU_LOG("\nCall Flow: %s -> %s : %s\n", sourceTask, destTask, message);
+}
+#endif
/**************************************************************************
* @brief Task Activation callback function.
uint8_t egtpActvTsk(Pst *pst, Buffer *mBuf)
{
uint8_t ret = ROK;
+
+#ifdef CALL_FLOW_DEBUG_LOG
+ callFlowEgtpActvTsk(pst);
+#endif
switch(pst->srcEnt)
{
memcpy(&egtpCb.egtpCfg, &egtpCfg, sizeof(EgtpConfig));
- egtpCb.recvTptSrvr.addr.address = CM_INET_NTOH_UINT32(egtpCb.egtpCfg.localIp.ipV4Addr);
- egtpCb.recvTptSrvr.addr.port = EGTP_DFLT_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 = ROK;
+#ifdef CALL_FLOW_DEBUG_LOG
+ DU_LOG("\nCall Flow: ENTDUAPP -> ENTEGTP : TNL_MGMT\n");
+#endif
+
DU_LOG("\nDEBUG --> EGTP : Received tunnel management request");
switch(tnlEvt.action)
{
uint32_t msgLen;
EgtpMsgHdr *msgHdr;
+#ifdef CALL_FLOW_DEBUG_LOG
+ DU_LOG("\nCall Flow: ENTDUAPP -> ENTEGTP : DATA_INDICATION\n");
+#endif
+
DU_LOG("\nDEBUG --> EGTP : Received Data Indication");
cmHashListFind(&(egtpCb.dstCb.teIdLst), (uint8_t *)&(egtpMsg.msgHdr.teId), sizeof(uint32_t), 0, (PTR *)&teidCb);
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_DFLT_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");
return RFAILED;
}
-
- DU_LOG("\nDEBUG --> EGTP : Message Sent");
+ else
+ {
+ DU_LOG("\nDEBUG --> EGTP : Sent UL Message [%ld]", numDataSent+1);
+ numDataSent++;
+ }
return ROK;
}
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);
+ DU_LOG("\nDEBUG --> EGTP : Received DL Message[%ld]\n", gDlDataRcvdCnt + 1);
//ODU_PRINT_MSG(recvBuf, 0 ,0);
egtpHdlRecvData(recvBuf);
gDlDataRcvdCnt++;
+
}
}