1 /******************************************************************************
3 * Copyright (c) 2020 ICT/CAS.
5 * Licensed under the O-RAN Software License, Version 1.0 (the "Software License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * https://www.o-ran.org/software
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 *******************************************************************************/
20 #ifndef __UPCCONTEXT_H__
21 #define __UPCCONTEXT_H__
27 #include "gnbCommon.h"
28 #include "cuModuleInterface.h"
32 #define UPC_MAX_IP_NUM 5
33 #define UPC_MAX_UP_NUM 1
34 #define UPC_MAX_PLMN_NUM 2
35 #define UPC_MAX_SLICE_NUM 3
36 #define UPC_MAX_QOS_PARA_NUM 10
37 #define UPC_MAX_UE_NUM MAX_UE_NUM
38 #define UPC_MAX_SESSION_NUM 10
39 #define UPC_MAX_DRB_NUM 2
61 UINT8 qosSetupAllowed;
67 QosFlowLevelQosPar_t qosPara;
70 QosFlowMapInd_e qosFlowMapInd;
73 E1apCause_e qosSetFailCause;
74 E1apCause_e qosModFailCause;
79 UINT8 drbSetupAllowed;
85 UINT16 qosSetupSuccNum;/* 最终建立成功的个数 */
86 UINT16 qosSetupFailNum;/* 最终建立失败的个数 */
89 UINT16 qosModSuccNum;/* 最终建立成功的个数 */
90 UINT16 qosModFailNum;/* 最终建立失败的个数 */
92 upcTempQosInfo_t *pQosSetupList;
93 upcTempQosInfo_t *pQosModList;
95 /* DRB Info --Begin */
97 UINT8 sdapFlag;/* Only Mod Optional */
100 UINT8 pdcpFlag;/* Only Mod Optional */
101 PDCPConfiguration_t pdcpConfig;
102 CellGroupInformation_t cellGroupInfo;
104 CellGroupInformation_t cellGroupToAdd;/* Only Mod Optional */
105 CellGroupInformation_t cellGroupToMod;/* Only Mod Optional */
106 CellGroupInformation_t cellGroupToRemove;/* Only Mod Optional */
109 DFIRequest_t drbDFIReq;
110 UINT8 DFIRspFlag;/* Only Mod Optional */
111 DFIResponse_t drbDFIRsp;
114 INT64 inactivityTimer;
116 UINT8 pdcpSNStatuFlag;
117 PdcpSNStatusInfo_t pdcpSNStatusInfo;
119 PdcpSNStatusRequest_e pdcpSNStatusReq;
121 UPParametersList_t f1UlUpPara;
122 UINT8 f1DlUpParaFlag;/* Only Mod Optional */
123 UPParametersList_t f1DlUpPara;
126 PdcpCount_t pdcpUlCount;
129 PdcpCount_t pdcpDlConut;
131 /* DRB Info -- end */
133 E1apCause_e drbSetFailCause;
134 E1apCause_e drbModFailCause;
139 UINT8 sessSetupAllowed;
140 UINT8 sessModAllowed;
145 UINT16 drbSetupSuccNum;/* 最终建立成功的个数 */
146 UINT16 drbSetupFailNum;/* 最终建立失败的个数 */
148 UINT16 drbModNum; /* 最初请求修改的个数 */
149 UINT16 drbModSuccNum; /* 最终修改成功的个数 */
150 UINT16 drbModFailNum; /* 最终修改失败的个数 */
153 UINT8 drbRemoveId[UPC_MAX_DRB_NUM];
155 upcTempDrbInfo_t *pTempDrbSetupList;
156 upcTempDrbInfo_t *pTempDrbModList;
158 /* Session Info --Begin */
159 PduSessType_e pduSessionType;
162 UINT8 secuIndiFlag;/* Only Mod Optional */
164 SecuResult_t securityResult;
166 UINT8 ulUpChgFlag;/* Only Mod Optional */
167 UpTransLayerInfo_t ulUpTNLInfo;
173 DFIRequest_t DFIInfoReq;
174 UINT8 DFIRspFlag;/* Only Mod Optional */
175 DFIResponse_t DFIInfoRsp;
177 UINT8 InactTimerFlag;
181 UpTransLayerInfo_t dlNgUpTnlInfo;
185 INT64 networkInstance;
186 /* session Info --End */
188 E1apCause_e sessSetFailCause;
189 E1apCause_e sessModFailCause;
195 struct upUeCb *pUeCb;
197 UINT16 sessSetupNum; /* 最初请求建立的个数 */
198 UINT16 sessSetupSuccNum;/* 最终建立成功的个数 */
199 UINT16 sessSetupFailNum;/* 最终建立失败的个数 */
201 UINT16 sessModNum; /* 最初请求修改的个数 */
202 UINT16 sessModSuccNum; /* 最终修改成功的个数 */
203 UINT16 sessModFailNum; /* 最终修改失败的个数 */
205 upcTempSessInfo_t *pTempSessSetupList;
206 upcTempSessInfo_t *pTempSessModList;
209 /* Content --Begin */
210 UINT8 secuInfoFlag;/* Only Mod Optional */
213 UINT8 dlAmbrFlag;/* Only Mod Optional */
217 ActNotiLevel_e actNotiLevel;
225 UINT8 bearStaChageFlag;
226 BearCxtStatusChange_e bearerCxtStatusChg;
228 UINT8 newTnlInfoReqFlag;/* Only Mod Optional */
229 NewUlTnlInfoRequire_e newTnlInfoReq;
231 UINT8 dataDisFlag;/* Only Mod Optional */
232 DataDisRequire_e dataDisRequire;
240 typedef struct upDrbCb
245 SdapCfg_t sdapConfig;
246 PDCPConfiguration_t pdcpConfig;
247 UPParametersList_t f1UlUpPara;
248 UPParametersList_t f1DlUpPara;
249 CellGroupInformation_t cellGroupInfo;
252 QosFlowQosPara_t qosFlowPara;
255 DFIRequest_t dataForInfoReq;
258 PdcpSNStatusInfo_t pdcpSNStatusInfo;
259 struct upSessCb *pSessionCb;
262 typedef struct upSessCb
266 PduSessType_e sessType;
270 SecuResult_t securityResult;
274 UpTransLayerInfo_t ngUlUpTransInfo;
275 UpTransLayerInfo_t ngDlUpTransInfo;
277 DFIRequest_t dataForInfoReq;
281 INT64 networkInstance;
284 UpDrbCb_t *pDrbCb[UPC_MAX_DRB_NUM];
286 struct upUeCb *pUeCb;
289 typedef enum upUeState_e
293 UP_UE_WAITING_INACTIVE,
297 typedef struct upUeCb
311 UINT16 sessNum;/* current session num */
312 UpSessCb_t *pSessCb[UPC_MAX_SESSION_NUM];
313 struct upInstance *pUpInstance;
316 typedef struct upInstance
322 GnbCuupName_t upName;
323 GnbCucpName_t cpName;
325 IpAddress_t upAddr[UPC_MAX_IP_NUM];
327 IpAddress_t cpAddr[UPC_MAX_IP_NUM];
331 E1apUpbPlmnCfgInfo_t bPlmnCfgInfo[e1ap_maxnoofSPLMNs];
333 UpUeCb_t *pUeCb[UPC_MAX_UE_NUM];
336 UpInstance_t *upcGetInstance();
337 UpUeCb_t* upcAllocUeCb(UpInstance_t *pInstance, UINT64 cuCpE1apId);
338 INT32 upcSetSessionCb(UpUeCb_t * pUeCb, PduSessionResourceToSetupList_t *pPduSessionSetupList);
339 void upcSetUeCb(UpUeCb_t * pUeCb, E1apBearerContextSetupReq_t *pBearerCxtSetupReq);
340 UpUeCb_t* upcGetUeCbByUpUeE1apId(UpInstance_t *pInstance, UINT64 cuUpE1apId);
341 void upcRemoveSessionCb(UpUeCb_t * pUeCb, PduSessionResourceToRemoveList_t *pRemoveList);
342 UpSessCb_t *upcGetSessCb(UpUeCb_t *pUeCb, UINT8 pduSessId);
343 UpDrbCb_t *upcGetDrbCb(UpSessCb_t *pSessCb, UINT8 drbId);