1 /******************************************************************************
2 ###############################################################################
3 # Copyright (c) [2017-2020] [ICT/CAS] #
4 # Licensed under the ORAN Software License v1.0 (License) #
5 ###############################################################################
6 ******************************************************************************/
8 #ifndef __UPCCONTEXT_H__
9 #define __UPCCONTEXT_H__
15 #include "gnbCommon.h"
16 #include "cuModuleInterface.h"
20 #define UPC_MAX_IP_NUM 5
21 #define UPC_MAX_UP_NUM 1
22 #define UPC_MAX_PLMN_NUM 2
23 #define UPC_MAX_SLICE_NUM 3
24 #define UPC_MAX_QOS_PARA_NUM 10
25 #define UPC_MAX_UE_NUM MAX_UE_NUM
26 #define UPC_MAX_SESSION_NUM 10
27 #define UPC_MAX_DRB_NUM 2
49 UINT8 qosSetupAllowed;
55 QosFlowLevelQosPar_t qosPara;
58 QosFlowMapInd_e qosFlowMapInd;
61 E1apCause_e qosSetFailCause;
62 E1apCause_e qosModFailCause;
67 UINT8 drbSetupAllowed;
73 UINT16 qosSetupSuccNum;/* 最终建立成功的个数 */
74 UINT16 qosSetupFailNum;/* 最终建立失败的个数 */
77 UINT16 qosModSuccNum;/* 最终建立成功的个数 */
78 UINT16 qosModFailNum;/* 最终建立失败的个数 */
80 upcTempQosInfo_t *pQosSetupList;
81 upcTempQosInfo_t *pQosModList;
83 /* DRB Info --Begin */
85 UINT8 sdapFlag;/* Only Mod Optional */
88 UINT8 pdcpFlag;/* Only Mod Optional */
89 PDCPConfiguration_t pdcpConfig;
90 CellGroupInformation_t cellGroupInfo;
92 CellGroupInformation_t cellGroupToAdd;/* Only Mod Optional */
93 CellGroupInformation_t cellGroupToMod;/* Only Mod Optional */
94 CellGroupInformation_t cellGroupToRemove;/* Only Mod Optional */
97 DFIRequest_t drbDFIReq;
98 UINT8 DFIRspFlag;/* Only Mod Optional */
99 DFIResponse_t drbDFIRsp;
102 INT64 inactivityTimer;
104 UINT8 pdcpSNStatuFlag;
105 PdcpSNStatusInfo_t pdcpSNStatusInfo;
107 PdcpSNStatusRequest_e pdcpSNStatusReq;
109 UPParametersList_t f1UlUpPara;
110 UINT8 f1DlUpParaFlag;/* Only Mod Optional */
111 UPParametersList_t f1DlUpPara;
114 PdcpCount_t pdcpUlCount;
117 PdcpCount_t pdcpDlConut;
119 /* DRB Info -- end */
121 E1apCause_e drbSetFailCause;
122 E1apCause_e drbModFailCause;
127 UINT8 sessSetupAllowed;
128 UINT8 sessModAllowed;
133 UINT16 drbSetupSuccNum;/* 最终建立成功的个数 */
134 UINT16 drbSetupFailNum;/* 最终建立失败的个数 */
136 UINT16 drbModNum; /* 最初请求修改的个数 */
137 UINT16 drbModSuccNum; /* 最终修改成功的个数 */
138 UINT16 drbModFailNum; /* 最终修改失败的个数 */
141 UINT8 drbRemoveId[UPC_MAX_DRB_NUM];
143 upcTempDrbInfo_t *pTempDrbSetupList;
144 upcTempDrbInfo_t *pTempDrbModList;
146 /* Session Info --Begin */
147 PduSessType_e pduSessionType;
150 UINT8 secuIndiFlag;/* Only Mod Optional */
152 SecuResult_t securityResult;
154 UINT8 ulUpChgFlag;/* Only Mod Optional */
155 UpTransLayerInfo_t ulUpTNLInfo;
161 DFIRequest_t DFIInfoReq;
162 UINT8 DFIRspFlag;/* Only Mod Optional */
163 DFIResponse_t DFIInfoRsp;
165 UINT8 InactTimerFlag;
169 UpTransLayerInfo_t dlNgUpTnlInfo;
173 INT64 networkInstance;
174 /* session Info --End */
176 E1apCause_e sessSetFailCause;
177 E1apCause_e sessModFailCause;
183 struct upUeCb *pUeCb;
185 UINT16 sessSetupNum; /* 最初请求建立的个数 */
186 UINT16 sessSetupSuccNum;/* 最终建立成功的个数 */
187 UINT16 sessSetupFailNum;/* 最终建立失败的个数 */
189 UINT16 sessModNum; /* 最初请求修改的个数 */
190 UINT16 sessModSuccNum; /* 最终修改成功的个数 */
191 UINT16 sessModFailNum; /* 最终修改失败的个数 */
193 upcTempSessInfo_t *pTempSessSetupList;
194 upcTempSessInfo_t *pTempSessModList;
197 /* Content --Begin */
198 UINT8 secuInfoFlag;/* Only Mod Optional */
201 UINT8 dlAmbrFlag;/* Only Mod Optional */
205 ActNotiLevel_e actNotiLevel;
213 UINT8 bearStaChageFlag;
214 BearCxtStatusChange_e bearerCxtStatusChg;
216 UINT8 newTnlInfoReqFlag;/* Only Mod Optional */
217 NewUlTnlInfoRequire_e newTnlInfoReq;
219 UINT8 dataDisFlag;/* Only Mod Optional */
220 DataDisRequire_e dataDisRequire;
228 typedef struct upDrbCb
233 SdapCfg_t sdapConfig;
234 PDCPConfiguration_t pdcpConfig;
235 UPParametersList_t f1UlUpPara;
236 UPParametersList_t f1DlUpPara;
237 CellGroupInformation_t cellGroupInfo;
240 QosFlowQosPara_t qosFlowPara;
243 DFIRequest_t dataForInfoReq;
246 PdcpSNStatusInfo_t pdcpSNStatusInfo;
247 struct upSessCb *pSessionCb;
250 typedef struct upSessCb
254 PduSessType_e sessType;
258 SecuResult_t securityResult;
262 UpTransLayerInfo_t ngUlUpTransInfo;
263 UpTransLayerInfo_t ngDlUpTransInfo;
265 DFIRequest_t dataForInfoReq;
269 INT64 networkInstance;
272 UpDrbCb_t *pDrbCb[UPC_MAX_DRB_NUM];
274 struct upUeCb *pUeCb;
277 typedef enum upUeState_e
281 UP_UE_WAITING_INACTIVE,
285 typedef struct upUeCb
299 UINT16 sessNum;/* current session num */
300 UpSessCb_t *pSessCb[UPC_MAX_SESSION_NUM];
301 struct upInstance *pUpInstance;
304 typedef struct upInstance
310 GnbCuupName_t upName;
311 GnbCucpName_t cpName;
313 IpAddress_t upAddr[UPC_MAX_IP_NUM];
315 IpAddress_t cpAddr[UPC_MAX_IP_NUM];
319 E1apUpbPlmnCfgInfo_t bPlmnCfgInfo[e1ap_maxnoofSPLMNs];
321 UpUeCb_t *pUeCb[UPC_MAX_UE_NUM];
324 UpInstance_t *upcGetInstance();
325 UpUeCb_t* upcAllocUeCb(UpInstance_t *pInstance, UINT64 cuCpE1apId);
326 INT32 upcSetSessionCb(UpUeCb_t * pUeCb, PduSessionResourceToSetupList_t *pPduSessionSetupList);
327 void upcSetUeCb(UpUeCb_t * pUeCb, E1apBearerContextSetupReq_t *pBearerCxtSetupReq);
328 UpUeCb_t* upcGetUeCbByUpUeE1apId(UpInstance_t *pInstance, UINT64 cuUpE1apId);
329 void upcRemoveSessionCb(UpUeCb_t * pUeCb, PduSessionResourceToRemoveList_t *pRemoveList);
330 UpSessCb_t *upcGetSessCb(UpUeCb_t *pUeCb, UINT8 pduSessId);
331 UpDrbCb_t *upcGetDrbCb(UpSessCb_t *pSessCb, UINT8 drbId);