#ifndef __DU_SCTP_H__
#define __DU_SCTP_H__
-#include <netinet/in.h>
-#include <netinet/sctp.h>
-#include "du_mgr.h"
+#define DU_SCTP_DOWN 0
+#define DU_SCTP_UP 1
+#define DU_SCTP_CONNECTING 2
+#define MAX_RETRY 5
-S16 sctpActvInit(Ent entity, Inst inst, Region region, Reason reason);
-S16 sctpActvTsk(Pst *pst, Buffer *mBuf);
+/* Global variable declaration */
+uint8_t socket_type; /* Socket type */
+bool nonblocking; /* Blocking/Non-blocking socket */
+bool connUp; /* Is connection up */
+bool pollingState;
+CmInetNetAddrLst localAddrLst;
+CmInetNetAddrLst remoteAddrLst;
-#define REALLY_BIG 65536
+typedef struct
+{
+ uint8_t numFd; /* Total count number of receivers socket Fd */
+ uint16_t port; /* Filled by the InetSctpRecvMsg during polling */
+ uint32_t flag; /* Refers to the notifyHandler Flag during successful InetSctpRecvMsg*/
+ Buffer *mBuf; /* Buffer filled during Socket polling*/
+ MsgLen bufLen; /* Determines the length of the Buffer filled during socket polling */
+ CmInetNetAddr addr; /* Determines the destination port filled during socket polling */
+ CmInetFdSet readFd; /* Refers to the Read Fd socket */
+ CmInetSctpSndRcvInfo info; /* Refers to Send Receivers Info*/
+ CmInetSctpNotification ntfy; /* Refers to the sctp Notification Message */
+}sctpSockPollParams;
-/* Convenience structure to determine space needed for cmsg. */
-typedef union
+typedef struct
{
- struct sctp_initmsg init;
- struct sctp_sndrcvinfo sndrcvinfo;
-}_sctp_cmsg_data_t;
+ uint8_t itfState; /* determines the interface State*/
+ 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 */
+ CmInetNetAddr destIpNetAddr; /* Refers to the destination Addr in CmInetNet Addr format */
+}DuSctpDestCb;
-#define CMSG_SPACE_INITMSG (CMSG_SPACE(sizeof(struct sctp_initmsg)))
-#define CMSG_SPACE_SNDRCV (CMSG_SPACE(sizeof(struct sctp_sndrcvinfo)))
+/* Global variable declaration */
+DuSctpDestCb f1Params; /* SCTP configurations at DU */
+DuSctpDestCb ricParams; /* SCTP configurations at DU */
-typedef union
-{
- struct sockaddr_storage ss;
- struct sockaddr_in v4;
- struct sockaddr_in6 v6;
- struct sockaddr sa;
-} sockaddr_storage_t;
+
+uint8_t sctpActvInit(Ent entity, Inst inst, Region region, Reason reason);
+uint8_t sctpActvTsk(Pst *pst, Buffer *mBuf);
+void sctpAssocReq();
+void sendToDuApp(Buffer *mBuf, Event event);
+uint8_t sctpSend(Buffer *mBuf, uint8_t itfType);
+uint8_t duSctpCfgReq(SctpParams sctpCfg);
+uint8_t fillAddrLst(CmInetNetAddrLst *addrLstPtr, F1IpAddr *ipAddr);
+uint8_t fillDestNetAddr(CmInetNetAddr *destAddrPtr, F1IpAddr *dstIpPtr);
+uint8_t establishReq(DuSctpDestCb *paramPtr);
+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, bool recvMsgSet);
+uint8_t sctpSockPoll();
#endif