X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fric_stub%2Fric_stub_sctp.h;h=c0ba6d8b9c8b5d5defd2f0735189b609cf97b3d6;hb=2a310f38af13dafd243ef7b24d5a721ed34355b3;hp=86fb14ce4eab6289afded66115c6370254079578;hpb=8660dd47a5ef27b62300fabf6b027852f1d5d026;p=o-du%2Fl2.git diff --git a/src/ric_stub/ric_stub_sctp.h b/src/ric_stub/ric_stub_sctp.h index 86fb14ce4..c0ba6d8b9 100644 --- a/src/ric_stub/ric_stub_sctp.h +++ b/src/ric_stub/ric_stub_sctp.h @@ -21,61 +21,91 @@ #ifndef __RIC_SCTP_H__ #define __RIC_SCTP_H__ -#include "ric_stub.h" -#include "cm_inet.h" -#include "cm_tpt.h" - -#include "cm_inet.x" -#include "cm_tpt.x" - #define MAX_RETRY 5 -#define DU_SCTP_UP 1 -#define DU_SCTP_DOWN 0 +#define MAX_IPV6_LEN 16 +#define MAX_DU_SUPPORTED 2 +#define MAX_ASSOC_SUPPORTED MAX_DU_SUPPORTED /* Global variable declaration */ -U8 socket_type; /* Socket type */ -Bool nonblocking; /* Blocking/Non-blocking socket */ -Bool connUp; /* Is connection up */ -int assocId; /* Assoc Id of connected assoc */ - -SctpParamsRic sctpCfg; /* SCTP configurations at DU */ +extern uint8_t socket_type; /* Socket type */ + +/* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.30 */ +typedef enum +{ + RIC_SERVICE, + SUPPORT_FUNCTIONS, + BOTH_FUNCTIONALITY +}AssocUsage; + typedef struct { - S16 numFds; - U16 port; - U32 flag; - Buffer *mBuf; - MsgLen bufLen; - CmInetNetAddr addr; - CmInetFdSet readFd; + uint16_t numFd; + uint16_t port; + uint32_t flag; + Buffer *mBuf; + MsgLen bufLen; + CmInetNetAddr addr; + CmInetFdSet readFd; CmInetSctpSndRcvInfo info; CmInetSctpNotification ntfy; }sctpSockPollParams; typedef struct { - U8 itfState; - U16 destPort; /* DU PORTS */ - U16 srcPort; - Bool bReadFdSet; - CmInetFd sockFd; /* Socket file descriptor */ - CmInetAddr peerAddr; - CmInetFd lstnSockFd; /* Listening Socket file descriptor */ - CmInetNetAddrLst destAddrLst; /* DU Ip address */ + uint32_t duId; + uint16_t destPort; /* DU PORTS */ + bool bReadFdSet; + CmInetFd sockFd; /* Socket file descriptor */ + CmInetAddr peerAddr; + CmInetNetAddrLst destAddrLst; /* DU Ip address */ + CmInetNetAddr destIpNetAddr; /* DU Ip address */ + Bool connUp; +}RicSctpAssocCb; + +typedef struct ipAddr +{ + bool ipV4Pres; + uint32_t ipV4Addr; + bool ipV6Pres; + uint8_t ipV6Addr[MAX_IPV6_LEN]; +}SctpIpAddr; + +typedef struct sctpDestInfo +{ + SctpIpAddr destIpAddr; + uint16_t destPort; +}SctpDestInfo; + +typedef struct ricSctpParams +{ + SctpIpAddr localIpAddr; + uint16_t e2SctpPort; + uint8_t numDestNode; + SctpDestInfo destCb[MAX_DU_SUPPORTED]; + AssocUsage usage; +}RicSctpParams; + +typedef struct sctpGlobalCb +{ + RicSctpParams sctpCfg; CmInetNetAddrLst localAddrLst; - CmInetNetAddr destIpNetAddr; /* DU Ip address */ -}CuSctpDestCb; + CmInetFd e2LstnSockFd; /* Listening Socket file descriptor for E2 association */ + uint8_t numAssoc; + RicSctpAssocCb assocCb[MAX_ASSOC_SUPPORTED]; +}SctpGlobalCb; + +extern SctpGlobalCb sctpCb; -EXTERN S16 sctpActvInit(); -EXTERN S16 sctpSend(Buffer *mBuf); -S16 sctpCfgReq(); -S16 sctpStartReq(); -S16 fillAddrLst(CmInetNetAddrLst *addrLstPtr, SctpIpAddr *ipAddr); -S16 fillDestNetAddr(CmInetNetAddr *destAddrPtr, SctpIpAddr *dstIpPtr); -S16 sctpSetSockOpts(CmInetFd *sock_Fd); -S16 sctpAccept(CmInetFd *lstnSock_Fd, CmInetAddr *peerAddr, CmInetFd *sock_Fd); -S16 sctpSockPoll(); -S16 processPolling(sctpSockPollParams *pollParams, CmInetFd *sockFd, U32 *timeoutPtr, CmInetMemInfo *memInfo); +uint8_t sctpActvInit(); +uint8_t sctpSend(uint32_t duId, Buffer *mBuf); +uint8_t sctpCfgReq(); +uint8_t sctpStartReq(); +uint8_t sctpSetSockOpts(CmInetFd *sock_Fd); +uint8_t sctpAccept(RicSctpAssocCb *assocCb); +uint8_t sctpSockPoll(); +uint8_t processPolling(sctpSockPollParams *pollParams, RicSctpAssocCb *destCb, uint32_t *timeoutPtr, CmInetMemInfo *memInfo); +uint8_t fillAddrLst(CmInetNetAddrLst *addrLstPtr, SctpIpAddr *ipAddr); +uint8_t fillDestNetAddr(CmInetNetAddr *destAddrPtr, SctpIpAddr *dstIpPtr); #endif