<JIRA ID: ODUHIGH-396 : scaling of DRBs to MAX>
[o-du/l2.git] / src / cu_stub / cu_stub.h
index 22ae742..2bfaabf 100644 (file)
 #define CU_POOL 1
 #define MAX_DU_PORT 2
 #define DU_PORT 38472
+#define MAX_NUM_OF_SLICE 1024 /* As per the spec 38.473, maxnoofSliceItems = 1024*/
 
+/*VALID Tunnel ID*/
+#define MIN_TEID 1   /*[Spec 29.281,Sec 5.1]: All Zero TEIDs are never assigned for setting up GTP-U Tunnel*/
+#define MAX_TEID MAX_NUM_DRB * MAX_NUM_UE /*[Spec 29.281]: Max limit is not mentioned but as per GTP-U Header Format, TEID occupies 4 octets */
 /* allocate and zero out a static buffer */
-#define CU_ALLOC(_datPtr, _size)                                \
-{                                                               \
-   S16 _ret;                                                    \
+
+#define CU_ALLOC(_datPtr, _size)                             \
+{                                                            \
+   S16 _ret;                                                 \
    _ret = SGetSBuf(CU_APP_MEM_REG, CU_POOL,                  \
-                     (Data **)&_datPtr, _size);                  \
-   if(_ret == ROK)                                              \
-      cmMemset((U8*)_datPtr, 0, _size);                         \
-   else                                                         \
-      _datPtr = NULLP;                                          \
+                     (Data **)&_datPtr, _size);              \
+   if(_ret == ROK)                                           \
+      memset(_datPtr, 0, _size);                      \
+   else                                                      \
+      _datPtr = NULLP;                                       \
 }
  
 /* free a static buffer */
-#define CU_FREE(_datPtr, _size)                                 \
+#define CU_FREE(_datPtr, _size)                              \
+   if(_datPtr)                                               \
    SPutSBuf(CU_APP_MEM_REG, CU_POOL,                         \
          (Data *)_datPtr, _size);
 
-
 typedef struct ipAddr
 {
- Bool ipV4Pres;
U32  ipV4Addr;
- Bool ipV6Pres;
U8   ipV6Addr[MAX_IPV6_LEN];
+ Bool      ipV4Pres;
uint32_t  ipV4Addr;
+ Bool      ipV6Pres;
uint8_t   ipV6Addr[MAX_IPV6_LEN];
 }SctpIpAddr;
 
 typedef struct RrcVersion
 {
-  U8    rrcVer;     /* Latest RRC Version */
-  U32   extRrcVer;  /* Latest RRC version extended */
+  uint8_t    rrcVer;     /* Latest RRC Version */
+  uint32_t   extRrcVer;  /* Latest RRC version extended */
 }RrcVersion;
 
 typedef struct egtpParams
 {
    SctpIpAddr  localIp;
-   U16         localPort;
+   uint16_t    localPort;
    SctpIpAddr  destIp;
-   U16         destPort;
-   U32       minTunnelId;
-   U32       maxTunnelId;
+   uint16_t    destPort;
+   uint32_t    currTunnelId;
+   uint32_t    minTunnelId;
+   uint32_t    maxTunnelId;
 }EgtpParams;
 
 typedef struct CuSctpParams
 {
    SctpIpAddr  duIpAddr;
-   U16         duPort;
+   uint16_t    duPort;
    SctpIpAddr  cuIpAddr;
-   U16         cuPort;
+   uint16_t    cuPort;
 }CuSctpParams;
 
 typedef struct cuCfgParams
 {
-   U32              cuId;
+   uint32_t         cuId;
    char             cuName[CU_DU_NAME_LEN_MAX];
    CuSctpParams     sctpParams;
    Plmn             plmn;
    EgtpParams       egtpParams;
    RrcVersion       rrcVersion;
+   uint8_t          numSnssaiSupported;
+   Snssai           *snssaiList[MAX_NUM_OF_SLICE];
 }CuCfgParams;
 CuCfgParams cuCfgParams; //global variable to hold all configs
 
 void readCuCfg();
 void cuAppInmsgHdlr(Buffer *mBuf);
 void sctpNtfyInd(CmInetSctpNotification *ntfy);
+uint8_t egtpInitReq();
+void *cuConsoleHandler(void *);
 
 #endif