/****************************************************************************** ############################################################################### # Copyright (c) [2017-2020] [ICT/CAS] # # Licensed under the ORAN Software License v1.0 (License) # ############################################################################### ******************************************************************************/ #ifndef NG_U_H #define NG_U_H #include "vos_lib.h" #include "cuupCommon.h" #include "plat_syslog.h" #define DL_PDU_SESSION_INFORMATION 0 /* NGU DL PDU type */ #define UL_PDU_SESSION_INFORMATION 1 /* NGU UL PDU type */ #define NGU_FREE(p) if(NULL != p)\ {\ VOS_Free(p);\ p = NULL;\ } #define nguLog(iLog_Level, content, arg...) \ VOS_SysLog(gNguModuleId, iLog_Level, __FILE__, __LINE__, __func__, content, ##arg); #define nguNullCheck(p) \ {\ if(NULL == p)\ {\ nguLog(LOG_ERR, "[NGU] NULL pointer\n");\ return VOS_ERROR;\ }\ } #define nguGetInstance(ueIdx,pduSessId,p) \ {\ if((NULL == gNguUeInfo[ueIdx])\ || (NULL == gNguUeInfo[ueIdx]->nguInstance[pduSessId]))\ {\ p = NULL;\ }else\ {\ p = gNguUeInfo[ueIdx]->nguInstance[pduSessId];\ }\ } #define nguDlDataCheck(p) if(NULL == p)\ {\ nguLog(LOG_ERR,"[NGU] input is NULL!\n");\ return VOS_ERROR;\ }else if(NULL==p->pMsgBuff)\ {\ nguLog(LOG_ERR,"[NGU] p->pMsgBuff in input is NULL!\n");\ return VOS_ERROR;\ }\ #define nguExPduCheck(p) if(NULL == p)\ {\ nguLog(LOG_ERR,"[NGU] ex pdu is null\n");\ return VOS_ERROR;\ }else if( (GTP_EXT_PDUSESSION_CONTAINER!=p->exHdrType) || (NULL==p->pPdu) || (p->len<=0))\ {\ nguLog(LOG_ERR,"[NGU] ex pdu is wrong\n");\ return VOS_ERROR;\ } #define nguDlDataFree(p) \ {\ if(NULL != p)\ {\ if(NULL != p->pExPduInfo)\ {\ if(NULL != p->pExPduInfo->pPdu)\ {\ NGU_FREE(p->pExPduInfo->pPdu);\ p->pExPduInfo->pPdu = NULL;\ }\ NGU_FREE(p->pExPduInfo);\ p->pExPduInfo = NULL;\ }\ NGU_FREE(p);\ p = NULL;\ }\ } typedef struct { UINT64 ueE1apId; UINT16 ueIdx; UINT16 pduSessionId; UINT32 ownTeid; }NguInstance_t; typedef struct { UINT16 ueIdx; UINT64 ueE1apId; CuupBearerStatus_e ueStatus; NguInstance_t *nguInstance[CUUP_MAX_SESSION_NUM]; }NguUeInfo_t; typedef struct dlPduSessInfo { UINT8 exHdrLen; /* gtp extension head length:2 */ UINT8 spare1 :4; /* spare: 0 */ UINT8 pduType :4; /* pdu type:0 */ UINT8 qfi :6; /* qfi */ UINT8 rqi :1; UINT8 ppp :1; UINT8 spare2 :5; UINT8 ppi :3; UINT8 padding[3]; UINT8 nextExHdrType;/* next extension head type:0 */ }DlPduSessInfo_t; typedef struct ulPduSessInfo { UINT8 exHdrLen; /* gtp extension head length:1 */ UINT8 spare1 :4; /* spare: 0 */ UINT8 pduType :4; /* pdu type:1 */ UINT8 qfi :6; /* qfi */ UINT8 spare2 :2; UINT8 nextExHdrType;/* next extension head type:0 */ }UlPduSessInfo_t; #endif /* NG_U_H */