X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcu_stub%2Fcu_stub_egtp.c;h=f2b6da60c74704e7e81ac88a3464e843ff65b420;hb=fdf994581c1b672158c911a9a5f7a4191832c695;hp=3729e45fcdb41df313176f46723cb8f07e92ad7d;hpb=def50dc175cebc67238db5f1acd5ff322a2279bd;p=o-du%2Fl2.git diff --git a/src/cu_stub/cu_stub_egtp.c b/src/cu_stub/cu_stub_egtp.c index 3729e45fc..f2b6da60c 100644 --- a/src/cu_stub/cu_stub_egtp.c +++ b/src/cu_stub/cu_stub_egtp.c @@ -47,7 +47,7 @@ EgtpGlobalCb egtpCb; ***************************************************************************/ S16 egtpActvInit() { - DU_LOG("\n\nEGTP : Initializing"); + DU_LOG("\n\nDEBUG --> EGTP : Initializing"); memset (&egtpCb, 0, sizeof(EgtpGlobalCb)); protType = CM_INET_PROTO_UDP; return ROK; @@ -81,24 +81,24 @@ uint8_t egtpInitReq() ret = cuEgtpCfgReq(); if(ret != ROK) { - DU_LOG("\nEGTP : Configuration failed"); + DU_LOG("\nERROR --> EGTP : Configuration failed"); return (ret); } ret = cuEgtpSrvOpenReq(); if(ret != ROK) { - DU_LOG("\nEGTP : Transport server open request failed"); + DU_LOG("\nERROR --> EGTP : Transport server open request failed"); return (ret); } tnlEvt.action = EGTP_TNL_MGMT_ADD; - tnlEvt.lclTeid = 10; + tnlEvt.lclTeid = 1; tnlEvt.remTeid = 1; ret = cuEgtpTnlMgmtReq(tnlEvt); if(ret != ROK) { - DU_LOG("\n EGTP : Tunnel management request failed"); + DU_LOG("\nERROR --> EGTP : Tunnel management request failed"); return RFAILED; } @@ -138,12 +138,12 @@ S16 cuEgtpCfgReq() if(ret != ROK) { - DU_LOG("\nEGTP : TeId hash list initialization failed"); + DU_LOG("\nERROR --> EGTP : TeId hash list initialization failed"); return RFAILED; } else { - DU_LOG("\nEGTP : Configuration successful"); + DU_LOG("\nINFO --> EGTP : Configuration successful"); } return ROK; @@ -171,38 +171,39 @@ S16 cuEgtpSrvOpenReq(Pst *pst) uint8_t ret; - DU_LOG("\nEGTP : Received open server request"); + DU_LOG("\nINFO --> EGTP : Received open server request"); sockType = CM_INET_DGRAM; if((ret = (cmInetSocket(sockType, &(egtpCb.recvTptSrvr.sockFd), protType))) != ROK) { - DU_LOG("\nEGTP : Failed to open UDP socket"); + DU_LOG("\nERROR --> EGTP : Failed to open UDP socket"); return RFAILED; } ret = cmInetBind(&(egtpCb.recvTptSrvr.sockFd), &(egtpCb.recvTptSrvr.addr)); if(ret != ROK) { - DU_LOG("\nEGTP : Failed to bind socket"); + DU_LOG("\nERROR --> EGTP : Failed to bind socket"); return RFAILED; } if(ret = (cmInetSocket(sockType, &(egtpCb.dstCb.sendTptSrvr.sockFd), protType)) != ROK) { - DU_LOG("\nEGTP : Failed to open UDP socket"); + DU_LOG("\nERROR --> EGTP : Failed to open UDP socket"); return RFAILED; } ret = cmInetBind(&(egtpCb.dstCb.sendTptSrvr.sockFd), &(egtpCb.dstCb.sendTptSrvr.addr)); if(ret != ROK) { - DU_LOG("\nEGTP : Failed to bind socket"); + DU_LOG("\nERROR --> EGTP : Failed to bind socket"); return RFAILED; } /* TODO: set socket options */ - DU_LOG("\nEGTP : Receiver socket[%d] and Sender socket[%d] open", egtpCb.recvTptSrvr.sockFd.fd, egtpCb.dstCb.sendTptSrvr.sockFd.fd); + DU_LOG("\nINFO --> EGTP : Receiver socket[%d] and Sender socket[%d] open", egtpCb.recvTptSrvr.sockFd.fd,\ + egtpCb.dstCb.sendTptSrvr.sockFd.fd); return ROK; } /* cuEgtpSrvOpenReq */ @@ -228,7 +229,7 @@ S16 cuEgtpTnlMgmtReq(EgtpTnlEvt tnlEvt) { S8 ret; - DU_LOG("\nEGTP : Received tunnel management request"); + DU_LOG("\nINFO --> EGTP : Received tunnel management request"); switch(tnlEvt.action) { case EGTP_TNL_MGMT_ADD: @@ -248,7 +249,7 @@ S16 cuEgtpTnlMgmtReq(EgtpTnlEvt tnlEvt) } default: { - DU_LOG("\nEGTP : Invalid tunnel management action[%d]", tnlEvt.action); + DU_LOG("\nERROR --> EGTP : Invalid tunnel management action[%d]", tnlEvt.action); ret = RFAILED; } } @@ -278,13 +279,13 @@ S16 cuEgtpTnlAdd(EgtpTnlEvt tnlEvt) EgtpMsgHdr preDefHdr; /* pre-define header for this tunnel */ - DU_LOG("\nEGTP : Tunnel addition : LocalTeid[%d] Remote Teid[%d]", tnlEvt.lclTeid, tnlEvt.remTeid); + DU_LOG("\nINFO --> EGTP : Tunnel addition : LocalTeid[%d] Remote Teid[%d]", tnlEvt.lclTeid, tnlEvt.remTeid); CU_ALLOC(teidCb, (Size)sizeof(EgtpTeIdCb)); if(teidCb == NULLP) { - DU_LOG("\nEGTP : Memory allocation failed"); + DU_LOG("\nERROR --> EGTP : Memory allocation failed"); return RFAILED; } @@ -296,7 +297,7 @@ S16 cuEgtpTnlAdd(EgtpTnlEvt tnlEvt) ret = cmHashListInsert(&(egtpCb.dstCb.teIdLst), (PTR)teidCb, (uint8_t *)&(teidCb->teId), sizeof(uint32_t)); if(ret != ROK) { - DU_LOG("\nEGTP : Failed to insert in hash list"); + DU_LOG("\nERROR --> EGTP : Failed to insert in hash list"); CU_FREE(teidCb, (Size)sizeof(EgtpTeIdCb)); return RFAILED; } @@ -338,12 +339,12 @@ S16 cuEgtpTnlMod(EgtpTnlEvt tnlEvt) S16 ret; EgtpTeIdCb *teidCb = NULLP; - printf("\nTunnel modification : LocalTeid[%d] Remote Teid[%d]", tnlEvt.lclTeid, tnlEvt.remTeid); + DU_LOG("\nDEBUG --> CU_STUB : Tunnel modification : LocalTeid[%d] Remote Teid[%d]", tnlEvt.lclTeid, tnlEvt.remTeid); cmHashListFind(&(egtpCb.dstCb.teIdLst), (uint8_t *)&(tnlEvt.teId), sizeof(uint32_t), 0, (PTR *)&teidCb); if(teidCb == NULLP) { - printf("\nTunnel id not found"); + DU_LOG("\nDEBUG --> CU_STUBTunnel id not found"); return RFAILED; } @@ -372,12 +373,12 @@ S16 cuEgtpTnlDel(EgtpTnlEvt tnlEvt) { EgtpTeIdCb *teidCb = NULLP; - DU_LOG("\nEGTP : Tunnel deletion : Local Teid[%d] Remote Teid[%d]", tnlEvt.lclTeid, tnlEvt.remTeid); + DU_LOG("\nDEBUG --> EGTP : Tunnel deletion : Local Teid[%d] Remote Teid[%d]", tnlEvt.lclTeid, tnlEvt.remTeid); cmHashListFind(&(egtpCb.dstCb.teIdLst), (uint8_t *)&(tnlEvt.lclTeid), sizeof(uint32_t), 0, (PTR *)&teidCb); if(teidCb == NULLP) { - DU_LOG("\nEGTP : Tunnel id[%d] not configured", tnlEvt.lclTeid); + DU_LOG("\nERROR --> EGTP : Tunnel id[%d] not configured", tnlEvt.lclTeid); return RFAILED; } @@ -505,7 +506,7 @@ S16 cuEgtpHdlRecvMsg(Buffer *mBuf) cuEgtpDecodeHdr(mBuf); /* Start Pumping data from CU to DU */ - return (cuEgtpDatReq()); + //return (cuEgtpDatReq()); } @@ -617,7 +618,7 @@ S16 cuEgtpDecodeHdr(Buffer *mBuf) ODU_REM_PRE_MSG(&extHdrType, mBuf); } - DU_LOG("\nEGTP : Message Buffer after decoding header "); + DU_LOG("\nDEBUG --> EGTP : Message Buffer after decoding header "); ODU_PRINT_MSG(mBuf, 0, 0); return ROK; @@ -626,21 +627,31 @@ S16 cuEgtpDecodeHdr(Buffer *mBuf) S16 cuEgtpDatReq() { - uint8_t cnt = 0; + uint8_t ret = ROK, cnt = 0; EgtpMsg egtpMsg; /* Build Application message that is supposed to come from app to egtp */ - BuildAppMsg(&egtpMsg); + ret = BuildAppMsg(&egtpMsg); + if(ret != ROK) + { + DU_LOG("\nERROR --> EGTP : Failed to build App Msg"); + return RFAILED; + } /* Encode EGTP header to build final EGTP message */ - BuildEgtpMsg(&egtpMsg); - + ret = BuildEgtpMsg(&egtpMsg); + if(ret != ROK) + { + DU_LOG("\nERROR --> EGTP : Failed to build EGTP Msg"); + return RFAILED; + } /* Send Message to peer */ - while(cnt < 1) + while(cnt < 200) { - DU_LOG("\nEGTP : Sending message[%d]", cnt+1); + DU_LOG("\nDEBUG --> EGTP : Sending message[%d]", cnt+1); cuEgtpSendMsg(egtpMsg.msg); cnt++; + //sleep(1); } ODU_PUT_MSG_BUF(egtpMsg.msg); @@ -651,8 +662,19 @@ S16 cuEgtpDatReq() S16 BuildAppMsg(EgtpMsg *egtpMsg) { - char data[30] = "This is EGTP data from CU"; - int datSize = 30; + char data[1215] = "In telecommunications, 5G is the fifth generation technology standard for broadband cellular" + " networks, which cellular phone companies began deploying worldwide in 2019, and is the planned successor to the 4G " + " networks which provide connectivity to most current cellphones. 5G networks are predicted to have more than 1.7" + " billion subscribers worldwide by 2025, according to the GSM Association.Like its predecessors, 5G networks are" + " cellular networks,in which the service area is divided into small geographical areas called cells.All 5G wireless" + " devices in a cell are connected to the Internet and telephone network by radio waves through local antenna in the" + " cell. The main advantage of the new networks is that they will have greater bandwidth, giving higher download" + " speeds, eventually up to 10 gigabits per second(Gbit/s). Due to the increased bandwidth, it is expected the" + " networks will not exclusively serve cellphones like existing cellular networks, but also be used as general" + " internet service providers for laptops and desktop computers, competing with existing ISPs such as cable" + " internet, and also will make possible new applications in internet of things (IoT) and machine to machine areas."; + + int datSize = 1215; Buffer *mBuf; @@ -660,14 +682,14 @@ S16 BuildAppMsg(EgtpMsg *egtpMsg) { if(ODU_ADD_POST_MSG_MULT((Data *)data, datSize, mBuf) != ROK) { - DU_LOG("\nEGTP : ODU_ADD_POST_MSG_MULT failed"); + DU_LOG("\nERROR --> EGTP : ODU_ADD_POST_MSG_MULT failed"); ODU_PUT_MSG_BUF(mBuf); return RFAILED; } } else { - DU_LOG("\nEGTP : Failed to allocate memory"); + DU_LOG("\nERROR --> EGTP : Failed to allocate memory"); return RFAILED; } @@ -745,7 +767,7 @@ S16 BuildAppMsg(EgtpMsg *egtpMsg) egtpMsg->msgHdr.seqNum.pres = FALSE; egtpMsg->msgHdr.extHdr.udpPort.pres = FALSE; egtpMsg->msgHdr.extHdr.pdcpNmb.pres = FALSE; - egtpMsg->msgHdr.teId = 10; + egtpMsg->msgHdr.teId = 1; egtpMsg->msg = mBuf; return ret; @@ -763,7 +785,7 @@ S16 BuildEgtpMsg(EgtpMsg *egtpMsg) cmHashListFind(&(egtpCb.dstCb.teIdLst), (uint8_t *)&(egtpMsg->msgHdr.teId), sizeof(uint32_t), 0, (PTR *)&teidCb); if(teidCb == NULLP) { - DU_LOG("\nEGTP : Tunnel id[%d] not configured", egtpMsg->msgHdr.teId); + DU_LOG("\nERROR --> EGTP : Tunnel id[%d] not configured", egtpMsg->msgHdr.teId); return (LCM_REASON_INVALID_PAR_VAL); } @@ -810,7 +832,7 @@ S16 BuildEgtpMsg(EgtpMsg *egtpMsg) ODU_ADD_PRE_MSG_MULT(&teidCb->preEncodedHdr.hdr[hdrLen], (EGTP_MAX_HDR_LEN - hdrLen), egtpMsg->msg); - DU_LOG("\nEGTP : Sending message buffer"); + DU_LOG("\nDEBUG --> EGTP : Sending message buffer"); ODU_PRINT_MSG(egtpMsg->msg, 0, 0); return ROK; @@ -832,11 +854,11 @@ S16 cuEgtpSendMsg(Buffer *mBuf) ret = cmInetSendMsg(&(egtpCb.dstCb.sendTptSrvr.sockFd), &dstAddr, &info, mBuf, &txLen, CM_INET_NO_FLAG); if(ret != ROK && ret != RWOULDBLOCK) { - DU_LOG("\nEGTP : Message send failure"); + DU_LOG("\nERROR --> EGTP : Message send failure"); return RFAILED; } - DU_LOG("\nEGTP : Message Sent"); + DU_LOG("\nDEBUG --> EGTP : Message Sent"); return ROK; }