648cf4f57e8375199d63b348bfbe2c168add560e
[scp/ocu/5gnr.git] / Include / cuModuleCommon.h
1 /******************************************************************************
2 ###############################################################################
3 #   Copyright (c) [2017-2020] [ICT/CAS]                                        #
4 #   Licensed under the ORAN Software License v1.0 (License)             #
5 ###############################################################################
6 ******************************************************************************/
7
8
9 #ifndef __CUMODULECOMMONH__
10 #define __CUMODULECOMMONH__
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15
16 #include "gnbCommon.h"
17 #include "cuModuleEnum.h"
18
19 #define MAX_LENGTH_RAN_NAME         150
20
21 #define CU_MAX_PLMN_NUM       6
22 #define CU_MAX_UES_PER_CELL   32
23 #define CU_MAX_DU_NUM         2
24
25 #define CU_MAX_AMF_NUM         2
26 #define CU_MAX_UPF_NUM         2
27 #define CU_MAX_CUUP_NUM        4
28
29 #define CU_MAX_CUCP_NUM        2
30
31
32 #define CU_SEC_SNOW3G_ALGO_BITMASK 0x01
33 #define CU_SEC_AES_ALGO_BITMASK    0x02
34 #define CU_SEC_ZUC_ALGO_BITMASK    0x03
35
36 #define CU_MAX_AS_SEC_ALGOS   4
37
38 #define CU_MAX_SNSSAI_NUM               3
39
40 typedef enum cuSecAlgo_
41 {
42   CU_SEC_NULL_ALGO,
43   CU_SEC_SNOW3G_ALGO,
44   CU_SEC_AES_ALGO,
45   CU_SEC_ZUC_ALGO
46 } CuSecAlgo_e;
47
48
49 #define CU_INVALID_AP_ID             0xFFFFFFFF;
50
51 #define CU_SET_CU_UE_F1AP_ID(_cuUeF1apId,_cellIdx,_ueIdx)  CU_SET_TRANS_ID(_cuUeF1apId,_cellIdx,_ueIdx,0)
52
53 /* gNB Identity */
54 typedef UINT32  gNBId_t;
55
56 typedef struct 
57 {
58         PlmnId_t        plmnId;
59         gNBId_t         gNBId;
60 }GlobalRanNodeId_t;
61
62 /* Ran name, a string */
63 typedef struct  RanName
64 {
65     char                    nodeName[MAX_LENGTH_RAN_NAME];
66 }RanName_t;
67
68 /* Tracking Area Code */
69 typedef struct  cuTac
70 {
71     UINT8                   tac[3];
72 }CuTac_t;
73
74 typedef struct  cuepsTac_s
75 {
76     UINT8                   tac[2];
77 }CuEpsTac_t;
78
79 /* S_NSSAI */
80 #define S_NSSAI_SD_PRESENT      (1 << 0)
81 typedef struct  SNssai
82 {
83     UINT16                  bitMask;
84     UINT8                   sst;
85     UINT32                  sd:24;/*optional*/
86 }SNssai_t;
87
88 typedef struct
89 {
90     UINT8                   sNssaiNum;
91     SNssai_t                sNssai[CU_MAX_SNSSAI_NUM];
92 }SliceList_t;
93
94 /* time stamp */
95 typedef struct  Timestamp
96 {
97     UINT8                   timeStamp[4];
98 }Timestamp_t;
99 /* NR-CGI */
100 typedef struct cuNrCgi
101 {
102     PlmnId_t                plmnId;
103     NrCellId_t              nrCellId;
104 }CuNrCgi_t;
105 /* TAI */
106 typedef struct Tai
107 {
108     PlmnId_t                plmnId;
109     CuTac_t                   tac;
110 }Tai_t;
111
112 /* masked imeisv */
113 typedef UINT64  MaskedImeiSv_t;
114
115 /* UE Identity Index value */
116 typedef struct UeIdIdxValue
117 {
118     UINT16                  ueIdIdxValue:10;
119 }UeIdIdxValue_t;
120
121 /* GTP Teid */
122 typedef UINT32  GtpTeid_t;
123
124 typedef struct recomRanGnbId
125 {
126         PlmnId_t                                plmnId;
127         gNBId_t                                 gNBId;
128 }RecomRanGnbId_t;
129
130 typedef struct transLayerAddr
131 {
132     UINT8                   transLayerAddress[20];
133         UINT8                                   bitStringSize;                  /* bit string size in bytes */
134 }TransLayerAddr_t;
135
136 typedef struct secuResult 
137 {
138     IPResult_e               integrityProtectionResult;
139     CPResult_e               confidentialityProtectionResult;
140 } SecuResult_t;
141
142 typedef struct gtpTunnel 
143 {
144     TransLayerAddr_t                        transLayerAddr;
145     GtpTeid_t                               gtpTeid;
146 } GtpTunnel_t;
147
148 typedef struct upTransLayerInfo 
149 {
150     GtpTunnel_t                             gtpTunnel;
151 } UpTransLayerInfo_t;
152
153 typedef struct
154 {
155         IPIndication_e                                                  IPIndication;
156         CPIndication_e                                                  CPIndication;
157         MaxIpDataRate_e                                                 maxIPdataRate;
158 }SecuInd_t;
159
160 #define PRIORITY_LEVEL_QOS_PRESENT                  (1 << 0)
161 #define NON_DYNAMIC_AVERAGING_WINDOW_PRESENT        (1 << 1) 
162 #define NON_DYNAMIC_MAX_DATA_BURST_VOLUME           (1 << 2) 
163 typedef struct nonDynamic5QIDescr 
164 {
165         UINT16                                                                  bitMask;
166         INT64                                                                   fiveQI;
167         INT64                                                                   priorityLevelQos;               /* OPTIONAL */
168         INT64                                                                   averagingWindow;                /* OPTIONAL */
169         INT64                                                                   maxDataBurstVolume; /* OPTIONAL */
170 } NonDynamic5QIDescr_t;
171
172 typedef struct
173 {
174         INT64                                                                   perScalar;
175         INT64                                                                   perExponent;
176 }PackErrorRate_t;
177         
178 #define FIVEQI_PRESENT                              (1 << 0)
179 #define DELAY_CRITICAL_PRESENT                      (1 << 1)
180 #define DYNAMIC_AVERAGING_WINDOW_PRESENT            (1 << 2)
181 #define DYNAMIC_MAX_DATA_BURST_VOLUME               (1 << 3)
182 typedef struct dynamic5QIDescr 
183 {
184         UINT16                                                                  bitMask;
185         INT64                                                                   priorityLevelQos;
186         INT64                                                                   packetDelayBudget;
187         PackErrorRate_t                                                 packetErrorRate;
188         INT64                                                                   fiveQI;                                 /* OPTIONAL */
189         Dynamic5QIDelayCritical_e                               delayCritical;                  /* OPTIONAL */
190         INT64                                                                   averagingWindow;                /* OPTIONAL */
191         INT64                                                                   maxDataBurstVolume;     /* OPTIONAL */
192 } Dynamic5QIDescr_t;
193
194 typedef struct QosCharact
195 {
196         QosCharacterPR_e        present;
197         union{
198                 NonDynamic5QIDescr_t                            nonDynamic5QI;
199                 Dynamic5QIDescr_t                                       dynamic5QI;
200         }choice;
201 } QosCharact_t;
202
203 typedef struct
204 {
205         PriorityLevel_e                                                 priorityLevel;
206         PreEmptionCapability_e                                  pre_emptionCapability;
207         PreEmptionVulnerability_e                               pre_emptionVulnerability;
208 }AllocAndRetenPriority_t;
209
210 typedef struct
211 {
212         SecuResult_t                    securityResult;
213         SecuInd_t                               securityIndication;
214 }UserPlaneSecurInfo_t;
215
216 #ifdef __cplusplus
217 }
218
219 #endif
220
221 #endif