#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 10 /*[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