[Epic-ID: ODUHIGH-405][Task-ID: ODUHIGH-414] F1 Setup from multiple DU to one CU
[o-du/l2.git] / src / cu_stub / cu_stub_sctp.h
index d2e08b6..2c0a9b7 100644 (file)
 #ifndef __CU_SCTP_H__
 #define __CU_SCTP_H__
 
-#include "cu_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_DOWN 0
-#define DU_SCTP_UP 1
+#define MAX_IPV6_LEN 16
+#define MAX_DU_SUPPORTED 1
 
 /* 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 */
-  
-SctpParamsCu sctpCfg;            /* SCTP configurations at DU */
-Bool pollingState; 
+uint8_t   socket_type;      /* Socket type */
+
 typedef struct
 {
-   S16           numFds;
-   U16           port;   
-   U32           flag;
-   Buffer        *mBuf;
-   MsgLen        bufLen; 
-   CmInetNetAddr addr;
+   S16              numFd;
+   uint16_t         port;   
+   uint32_t         flag;
+   Buffer           *mBuf;
+   MsgLen           bufLen; 
+   CmInetNetAddr    addr;
    CmInetFdSet      readFd;
    CmInetSctpSndRcvInfo   info;
    CmInetSctpNotification ntfy;
@@ -55,8 +43,9 @@ typedef struct
 
 typedef struct
 {
-   U16              destPort;         /* DU PORTS */
-   U16              srcPort;
+   uint32_t         duId;
+   uint16_t         destPort;         /* DU PORTS */
+   uint16_t         srcPort;
    Bool             bReadFdSet;
    CmInetFd         sockFd;           /* Socket file descriptor */
    CmInetAddr       peerAddr;
@@ -64,19 +53,51 @@ typedef struct
    CmInetNetAddrLst destAddrLst;      /* DU Ip address */
    CmInetNetAddrLst localAddrLst;
    CmInetNetAddr    destIpNetAddr;    /* DU Ip address */ 
+   Bool             connUp;           /* Is connection up */
 }CuSctpDestCb;
 
-EXTERN S16 sctpActvInit();
-EXTERN S16 sctpStartReq();
-EXTERN S16 sctpSend(Buffer *mBuf);
-EXTERN S16 sctpCfgReq();
+typedef struct ipAddr
+{
+ Bool      ipV4Pres;
+ uint32_t  ipV4Addr;
+ Bool      ipV6Pres;
+ uint8_t   ipV6Addr[MAX_IPV6_LEN];
+}SctpIpAddr;
+
+typedef struct sctpAssocInfo
+{
+   SctpIpAddr  duIpAddr;
+   uint16_t    duPort;
+   SctpIpAddr  cuIpAddr;
+   uint16_t    cuPort;
+}SctpAssocInfo;
+
+typedef struct CuSctpParams
+{
+   uint8_t        numDu;
+   SctpAssocInfo  sctpAssoc[MAX_DU_SUPPORTED];
+}CuSctpParams;
+
+typedef struct
+{
+   CuSctpParams sctpCfg;
+   uint8_t      numDu;
+   CuSctpDestCb destCb[MAX_DU_SUPPORTED]; 
+}SctpGlobalCb;
+
+SctpGlobalCb sctpCb;
+
+uint8_t sctpActvInit();
+uint8_t sctpStartReq();
+uint8_t sctpSend(uint32_t duId, Buffer *mBuf);
+uint8_t sctpCfgReq();
 
-S16 fillAddrLst(CmInetNetAddrLst *addrLstPtr, SctpIpAddr *ipAddr);
-S16 fillDestNetAddr(CmInetNetAddr *destAddrPtr, SctpIpAddr *dstIpPtr);
-S16 sctpSetSockOpts(CmInetFd *sock_Fd);
-S16 sctpSockPoll();
-S16 sctpAccept(CmInetFd *lstnSock_Fd, CmInetAddr *peerAddr, CmInetFd *sock_Fd);
-S16 processPolling(sctpSockPollParams *pollParams, CmInetFd *sockFd, U32 *timeoutPtr, CmInetMemInfo *memInfo);
+uint8_t fillAddrLst(CmInetNetAddrLst *addrLstPtr, SctpIpAddr *ipAddr);
+uint8_t fillDestNetAddr(CmInetNetAddr *destAddrPtr, SctpIpAddr *dstIpPtr);
+uint8_t sctpSetSockOpts(CmInetFd *sock_Fd);
+uint8_t sctpSockPoll();
+uint8_t sctpAccept(CuSctpDestCb *destCb);
+uint8_t processPolling(sctpSockPollParams *pollParams, CuSctpDestCb *destCb, uint32_t *timeoutPtr, CmInetMemInfo *memInfo);
 #endif
 
 /**********************************************************************