+++ /dev/null
- /*******************************************************************************
- ################################################################################
- # Copyright (c) [2017-2019] [Radisys] #
- # #
- # Licensed under the Apache License, Version 2.0 (the "License"); #
- # you may not use this file except in compliance with the License. #
- # You may obtain a copy of the License at #
- # #
- # http://www.apache.org/licenses/LICENSE-2.0 #
- # #
- # Unless required by applicable law or agreed to in writing, software #
- # distributed under the License is distributed on an "AS IS" BASIS, #
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
- # See the License for the specific language governing permissions and #
- # limitations under the License. #
- ################################################################################
- *******************************************************************************/
-
- #ifndef _LWR_MAC_NFAPI_H_
- #define _LWR_MAC_NFAPI_H_
-
-#include "nfapi_interface.h"
-
-typedef struct nfapiTransportInfo
-{
- uint32_t assocId;
- uint8_t srcIpv4Address[4]; /*Src :: PNF Address Details*/
- uint16_t srcIpv4Port;
- uint8_t destIpv4Address[4]; /*Dest :: VNF Address Details*/
- uint16_t destIpv4Port;
- CmInetFd sockFd; /* Socket file descriptor */
- CmInetNetAddrLst addrLst; /* Refers to the destinaiton Addr Lst in CmInetNetAddrLst format */
- CmInetNetAddr ipNetAddr; /* Refers to the destination Addr in CmInetNet Addr format */
-
- /*TODO: later also add the IPV6 support*/
-
-}NfapiTransportInfo;
-
-typedef struct nfapiTimingInfo
-{
- uint32_t dl_tti_offset;
- uint32_t ul_tti_offset;
- uint32_t ul_dci_offset;
- uint32_t tx_data_offset;
- uint16_t timingWindow;
- uint8_t timingInfoMode;
-
-}NfapiTimingInfo;
-
-typedef struct nfapiPnfConfig
-{
- nFapi_pnf_state pnfState;
- uint16_t max_phys;
- NfapiTimingInfo vnfTimingCfg;
-}NfapiPnfConfig;
-
-typedef struct nfapiSyncInfo
-{
- uint8_t phyId;
- uint8_t inSync;
- uint32_t prev_t1;
- uint32_t prev_t2;
- uint32_t prev_t3;
- uint8_t sfn;
- uint8_t slot;
- NfapiSyncInfo *next;
-}NfapiSyncInfo;
-
-typedef struct nfapiP7VnfInfo
-{
- uint32_t sfnStartTime;
- uint32_t slotStartTime;
- NfapiSyncInfo *p7SyncInfo;
-}NfapiP7VnfInfo;
-
-typedef struct nfapiVnfDb
-{
- NfapiTransportInfo p5TransInfo;
- NfapiTransportInfo p7TransInfo;
- NfapiPnfConfig pnfConfig;
- NfapiSyncInfo vnfSynchInfo;
- NfapiP7VnfInfo vnfP7Info;
-}NfapiVnfDb;
-
- #endif
f1Params.destPort = sctpCfg.cuPort;
f1Params.itfState = DU_SCTP_DOWN;
f1Params.srcPort = sctpCfg.duPort[F1_INTERFACE];
+ f1Params.recvMsgSet = ROK;
memset (&f1Params.sockFd, -1, sizeof(CmInetFd));
fillDestNetAddr(&f1Params.destIpNetAddr, &f1Params.destIpAddr);
fillAddrLst(&f1Params.destAddrLst, &f1Params.destIpAddr);
ricParams.destPort = sctpCfg.ricPort;
ricParams.itfState = DU_SCTP_DOWN;
ricParams.srcPort = sctpCfg.duPort[E2_INTERFACE];
+ ricParams.recvMsgSet = ROK;
memset (&ricParams.sockFd, -1, sizeof(CmInetFd));
fillDestNetAddr(&ricParams.destIpNetAddr, &ricParams.destIpAddr);
fillAddrLst(&ricParams.destAddrLst, &ricParams.destIpAddr);
* @params[in] Params required for polling
* @params[in] SockFd for file descriptor
* @params[in] timeoutPtr indicates the timeout value
- * @params[in] MemInfo
+ * @params[in] MemInfo, recvMsgSet
*
* @return ROK - success
* RFAILED - failure
*
* ****************************************************************/
-uint8_t processPolling(sctpSockPollParams *pollParams, CmInetFd *sockFd, uint32_t *timeoutPtr, CmInetMemInfo *memInfo)
+uint8_t processPolling(sctpSockPollParams *pollParams, CmInetFd *sockFd, uint32_t *timeoutPtr, CmInetMemInfo *memInfo, bool recvMsgSet)
{
uint8_t ret = ROK;
CM_INET_FD_SET(sockFd, &pollParams->readFd);
if(ret != ROK)
{
DU_LOG("\nERROR --> SCTP: Failed to receive sctp msg for sockFd[%d]\n", sockFd->fd);
+ recvMsgSet = RFAILED;
+
}
else
{
}
}
}
- return ret;
+ return ROK;
}
/*******************************************************************
*
{
if(f1Params.itfState)
{
- if((ret = processPolling(&f1PollParams, &f1Params.sockFd, timeout_Ptr, &memInfo)) != ROK)
+ if((ret = processPolling(&f1PollParams, &f1Params.sockFd, timeout_Ptr, &memInfo, f1Params.recvMsgSet)) != ROK)
{
DU_LOG("\nERROR --> SCTP : Failed to RecvMsg for F1\n");
}
}
if(ricParams.itfState)
{
- if((ret = processPolling(&e2PollParams, &ricParams.sockFd, timeout_Ptr, &memInfo)) != ROK)
+ if((ret = processPolling(&e2PollParams, &ricParams.sockFd, timeout_Ptr, &memInfo, ricParams.recvMsgSet)) != ROK)
{
DU_LOG("\nERROR --> SCTP : Failed to RecvMsg for E2\n");
}
uint16_t destPort; /* Refers to the destination port of F1/E2 */
uint16_t srcPort; /* Refers to respective src port of DU */
uint32_t assocId;
+ bool recvMsgSet;
F1IpAddr destIpAddr; /* Refers to te destination Ip Address */
CmInetFd sockFd; /* Socket file descriptor */
CmInetNetAddrLst destAddrLst; /* Refers to the destinaiton Addr Lst in CmInetNetAddrLst format */
uint8_t duSctpAssocReq(uint8_t itfType);
uint8_t duFillSctpPst(Pst *pst, Event event);
uint8_t sctpSetSockOpts(CmInetFd *sock_Fd);
-uint8_t processPolling(sctpSockPollParams *pollParams, CmInetFd *sockFd, uint32_t *timeoutPtr, CmInetMemInfo *memInfo);
+uint8_t processPolling(sctpSockPollParams *pollParams, CmInetFd *sockFd, uint32_t *timeoutPtr, CmInetMemInfo *memInfo, bool recvMsgSet);
uint8_t sctpSockPoll();
#endif