X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=Include%2FupcContext.h;fp=Include%2FupcContext.h;h=c7bd32078cf1f658cbf7a0b030a58fe6cb9eec1f;hb=1f71b9a76eacf92b39c1ce6f782f8404a34f60a9;hp=0000000000000000000000000000000000000000;hpb=254694245736881ecfff4eb0d1503bf3f49a21be;p=scp%2Focu%2F5gnr.git diff --git a/Include/upcContext.h b/Include/upcContext.h new file mode 100644 index 0000000..c7bd320 --- /dev/null +++ b/Include/upcContext.h @@ -0,0 +1,339 @@ +/****************************************************************************** +############################################################################### +# Copyright (c) [2017-2020] [ICT/CAS] # +# Licensed under the ORAN Software License v1.0 (License) # +############################################################################### +******************************************************************************/ + +#ifndef __UPCCONTEXT_H__ +#define __UPCCONTEXT_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "gnbCommon.h" +#include "cuModuleInterface.h" + + + +#define UPC_MAX_IP_NUM 5 +#define UPC_MAX_UP_NUM 1 +#define UPC_MAX_PLMN_NUM 2 +#define UPC_MAX_SLICE_NUM 3 +#define UPC_MAX_QOS_PARA_NUM 10 +#define UPC_MAX_UE_NUM MAX_UE_NUM +#define UPC_MAX_SESSION_NUM 10 +#define UPC_MAX_DRB_NUM 2 + +typedef struct +{ + INT64 sessId; + E1apCause_e cause; +}SessFailitem_t; + +typedef struct +{ + INT16 drbId; + E1apCause_e cause; +}DrbFailitem_t; + +typedef struct +{ + UINT8 qosFlowId; + E1apCause_e cause; +}qosFailitem_t; + +typedef struct +{ + UINT8 qosSetupAllowed; + UINT8 qosModAllowed; + + UINT8 qosFlowId; + + /* QOS Info Begin */ + QosFlowLevelQosPar_t qosPara; + + UINT8 qosMapFlag; + QosFlowMapInd_e qosFlowMapInd; + /* QOS Info End */ + + E1apCause_e qosSetFailCause; + E1apCause_e qosModFailCause; +}upcTempQosInfo_t; + +typedef struct +{ + UINT8 drbSetupAllowed; + UINT8 drbModAllowed; + + UINT8 drbId; + + UINT16 qosSetupNum; + UINT16 qosSetupSuccNum;/* 最终建立成功的个数 */ + UINT16 qosSetupFailNum;/* 最终建立失败的个数 */ + + UINT16 qosModNum; + UINT16 qosModSuccNum;/* 最终建立成功的个数 */ + UINT16 qosModFailNum;/* 最终建立失败的个数 */ + + upcTempQosInfo_t *pQosSetupList; + upcTempQosInfo_t *pQosModList; + + /* DRB Info --Begin */ + + UINT8 sdapFlag;/* Only Mod Optional */ + SdapCfg_t sdapConfig; + + UINT8 pdcpFlag;/* Only Mod Optional */ + PDCPConfiguration_t pdcpConfig; + CellGroupInformation_t cellGroupInfo; + + CellGroupInformation_t cellGroupToAdd;/* Only Mod Optional */ + CellGroupInformation_t cellGroupToMod;/* Only Mod Optional */ + CellGroupInformation_t cellGroupToRemove;/* Only Mod Optional */ + + UINT8 DFIReqFlag; + DFIRequest_t drbDFIReq; + UINT8 DFIRspFlag;/* Only Mod Optional */ + DFIResponse_t drbDFIRsp; + + UINT8 inactTimeFlag; + INT64 inactivityTimer; + + UINT8 pdcpSNStatuFlag; + PdcpSNStatusInfo_t pdcpSNStatusInfo; + + PdcpSNStatusRequest_e pdcpSNStatusReq; + + UPParametersList_t f1UlUpPara; + UINT8 f1DlUpParaFlag;/* Only Mod Optional */ + UPParametersList_t f1DlUpPara; + + UINT8 pdcpUlCntFlag; + PdcpCount_t pdcpUlCount; + + UINT8 pdcpDlCntFlag; + PdcpCount_t pdcpDlConut; + + /* DRB Info -- end */ + + E1apCause_e drbSetFailCause; + E1apCause_e drbModFailCause; +}upcTempDrbInfo_t; + +typedef struct +{ + UINT8 sessSetupAllowed; + UINT8 sessModAllowed; + + UINT16 pduSessId; + + UINT16 drbSetupNum; + UINT16 drbSetupSuccNum;/* 最终建立成功的个数 */ + UINT16 drbSetupFailNum;/* 最终建立失败的个数 */ + + UINT16 drbModNum; /* 最初请求修改的个数 */ + UINT16 drbModSuccNum; /* 最终修改成功的个数 */ + UINT16 drbModFailNum; /* 最终修改失败的个数 */ + + UINT8 drbRemoveNum; + UINT8 drbRemoveId[UPC_MAX_DRB_NUM]; + + upcTempDrbInfo_t *pTempDrbSetupList; + upcTempDrbInfo_t *pTempDrbModList; + + /* Session Info --Begin */ + PduSessType_e pduSessionType; + SNssai_t snssai; + + UINT8 secuIndiFlag;/* Only Mod Optional */ + SecuInd_t secuIndi; + SecuResult_t securityResult; + + UINT8 ulUpChgFlag;/* Only Mod Optional */ + UpTransLayerInfo_t ulUpTNLInfo; + + UINT8 dlAMBRFlag; + UINT64 sessDlAMBR; + + UINT8 DFIReqFlag; + DFIRequest_t DFIInfoReq; + UINT8 DFIRspFlag;/* Only Mod Optional */ + DFIResponse_t DFIInfoRsp; + + UINT8 InactTimerFlag; + INT64 inactTimer; + + UINT8 dlNGupTnlFlag; + UpTransLayerInfo_t dlNgUpTnlInfo; + UINT8 dlNgUpChgFlag; + + UINT8 InstanceFlag; + INT64 networkInstance; + /* session Info --End */ + + E1apCause_e sessSetFailCause; + E1apCause_e sessModFailCause; +}upcTempSessInfo_t; + + +typedef struct +{ + struct upUeCb *pUeCb; + + UINT16 sessSetupNum; /* 最初请求建立的个数 */ + UINT16 sessSetupSuccNum;/* 最终建立成功的个数 */ + UINT16 sessSetupFailNum;/* 最终建立失败的个数 */ + + UINT16 sessModNum; /* 最初请求修改的个数 */ + UINT16 sessModSuccNum; /* 最终修改成功的个数 */ + UINT16 sessModFailNum; /* 最终修改失败的个数 */ + + upcTempSessInfo_t *pTempSessSetupList; + upcTempSessInfo_t *pTempSessModList; + + + /* Content --Begin */ + UINT8 secuInfoFlag;/* Only Mod Optional */ + SecuInfo_t secuInfo; + + UINT8 dlAmbrFlag;/* Only Mod Optional */ + UINT64 ueDlAMBR; + + PlmnId_t servPlmnId; + ActNotiLevel_e actNotiLevel; + + UINT8 dlIPDRFlag; + UINT64 ueDlMaxIPDR; + + UINT8 inactTimeFlag; + INT64 inactTimer; + + UINT8 bearStaChageFlag; + BearCxtStatusChange_e bearerCxtStatusChg; + + UINT8 newTnlInfoReqFlag;/* Only Mod Optional */ + NewUlTnlInfoRequire_e newTnlInfoReq; + + UINT8 dataDisFlag;/* Only Mod Optional */ + DataDisRequire_e dataDisRequire; + /* Content --End */ +}upcTempInfo_t; + + +struct upSessCb; +struct upUeCb; +struct upInstance; +typedef struct upDrbCb +{ + UINT8 useFlag; + INT64 drbId; + + SdapCfg_t sdapConfig; + PDCPConfiguration_t pdcpConfig; + UPParametersList_t f1UlUpPara; + UPParametersList_t f1DlUpPara; + CellGroupInformation_t cellGroupInfo; + + /* QOS INFO */ + QosFlowQosPara_t qosFlowPara; + + UINT8 DFIFlag; + DFIRequest_t dataForInfoReq; + + + PdcpSNStatusInfo_t pdcpSNStatusInfo; + struct upSessCb *pSessionCb; +}UpDrbCb_t; + +typedef struct upSessCb +{ + UINT8 useFlag; + UINT16 sessId; + PduSessType_e sessType; + SNssai_t sNSsai; + + SecuInd_t secuInd; + SecuResult_t securityResult; + + UINT64 dlAMBR; + + UpTransLayerInfo_t ngUlUpTransInfo; + UpTransLayerInfo_t ngDlUpTransInfo; + + DFIRequest_t dataForInfoReq; + + + + INT64 networkInstance; + + UINT8 drbNum; + UpDrbCb_t *pDrbCb[UPC_MAX_DRB_NUM]; + + struct upUeCb *pUeCb; +}UpSessCb_t; + +typedef enum upUeState_e +{ + UP_UE_INIT, + UP_UE_ACTIVE, + UP_UE_WAITING_INACTIVE, + UP_UE_INACTIVE +}UpUeState_e; + +typedef struct upUeCb +{ + UINT8 useFlag; + UINT64 cpE1apId; + UINT64 upE1apId; + + UpUeState_e ueState; + SecuInfo_t secuInfo; + UINT64 ueDlAMBR; + UINT64 ueDlMaxIPDR; + PlmnId_t plmnId; + + INT64 inActTimer; + + UINT16 sessNum;/* current session num */ + UpSessCb_t *pSessCb[UPC_MAX_SESSION_NUM]; + struct upInstance *pUpInstance; +}UpUeCb_t; + +typedef struct upInstance +{ + Instance_t instance; + UINT32 moduleId; + UINT32 state; + UINT64 upId; + GnbCuupName_t upName; + GnbCucpName_t cpName; + INT8 upAddrNum; + IpAddress_t upAddr[UPC_MAX_IP_NUM]; + INT8 cpAddrNum; + IpAddress_t cpAddr[UPC_MAX_IP_NUM]; + + INT64 upCapa; + UINT32 bPlmnNum; + E1apUpbPlmnCfgInfo_t bPlmnCfgInfo[e1ap_maxnoofSPLMNs]; + UINT32 ueNum; + UpUeCb_t *pUeCb[UPC_MAX_UE_NUM]; +}UpInstance_t; + +UpInstance_t *upcGetInstance(); +UpUeCb_t* upcAllocUeCb(UpInstance_t *pInstance, UINT64 cuCpE1apId); +INT32 upcSetSessionCb(UpUeCb_t * pUeCb, PduSessionResourceToSetupList_t *pPduSessionSetupList); +void upcSetUeCb(UpUeCb_t * pUeCb, E1apBearerContextSetupReq_t *pBearerCxtSetupReq); +UpUeCb_t* upcGetUeCbByUpUeE1apId(UpInstance_t *pInstance, UINT64 cuUpE1apId); +void upcRemoveSessionCb(UpUeCb_t * pUeCb, PduSessionResourceToRemoveList_t *pRemoveList); +UpSessCb_t *upcGetSessCb(UpUeCb_t *pUeCb, UINT8 pduSessId); +UpDrbCb_t *upcGetDrbCb(UpSessCb_t *pSessCb, UINT8 drbId); + +#ifdef __cplusplus +} +#endif + +#endif + +