1 /*******************************************************************************
2 ################################################################################
3 # Copyright (c) [2017-2019] [Radisys] #
5 # Licensed under the Apache License, Version 2.0 (the "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 # http://www.apache.org/licenses/LICENSE-2.0 #
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. #
16 ################################################################################
17 *******************************************************************************/
19 /* This file contains all E2AP message handler related functionality */
21 #define MAX_NUM_TRANSACTION 256 /* As per, O-RAN WG3 E2AP v3.0, section 9.2.33 */
22 #define MAX_E2_SETUP_TMR 1
23 #define EVENT_E2_SETUP_TMR 1
24 #define MAX_RAN_FUNCTION 256 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.2.2 : maxofRANfunctionID */
25 #define MAX_E2_NODE_COMPONENT 1024 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.2.2 : maxofE2nodeComponents */
26 #define MAX_TNL_ASSOCIATION 32 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.2.11 : maxofTNLA */
27 #define MAX_RIC_STYLES 64 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.2.1 : maxnoofRICstyle */
28 #define MAX_MEASUREMENT_INFO 65535 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.2.1 : maxnoofMeasurementInfo */
29 #define MAX_LABEL_INFO 2147483648 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.1 : maxnoofLabelInfo */
30 #define MAX_RIC_ACTION 16 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 : maxofRICActionID */
31 #define MAX_RIC_REQUEST 65535 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.7 */
33 #define STRING_SIZE_150_BYTES 150
34 #define STRING_SIZE_1000_BYTES 1000
36 #define SHORT_NAME "ORAN-E2SM-KPM"
37 #define SERVICE_MODEL_OID "1.3.6.1.4.1.53148.1.2.2.2"
38 #define DESCRIPTION "KPM Monitor"
39 #define NUM_OF_EVENT_TRIGGER_STYLE_SUPPORTED 1
40 #define EVENT_TRIGGER_STYLE_NAME "Periodic Report"
41 #define EVENT_TRIGGER_STYLE_TYPE 1
42 #define EVENT_TRIGGER_STYLE_FORMAT_TYPE 1
43 #define NUM_OF_RIC_REPORT_STYLE_SUPPORTED 1
44 #define REPORT_STYLE_NAME "E2 Node Measurement"
45 #define REPORT_STYLE_TYPE 1
46 #define REPORT_ACTION_FORMAT_TYPE 1
47 #define NUM_OF_MEASUREMENT_INFO_SUPPORTED 2
48 #define MEASUREMENT_TYPE_NAME (char*[]) {"RRU.PrbTotDl", "RRU.PrbTotUl"}
49 #define RIC_INDICATION_HEADER_FORMAT 1
50 #define RIC_INDICATION_MESSAGE_FORMAT 1
52 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.26 */
66 E2_NODE_COMPONENT_ADD,
67 E2_NODE_COMPONENT_UPDATE
70 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.30 */
78 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.11 */
90 }E2ProcedureDirection;
94 E2_RAN_FUNCTION_ID_INVALID,
95 E2_ACTION_NOT_SUPPORTED,
96 E2_EXECESSIVE_ACTIONS,
98 E2_DUPLICATE_EVENT_TRIGGER,
99 E2_FUNCTION_RESOURCE_LIMIT,
100 E2_REQUEST_ID_UNKNOWN,
101 E2_INCONSISTENT_ACTION_SUBSEQUENT_ACTION_SEQUENCE,
102 E2_CONTROL_MESSAGE_INVALID,
103 E2_RIC_CALL_PROCESS_ID_INVALID,
104 E2_CONTROL_TIMER_EXPIRED,
105 E2_CONTROL_FAILED_TO_EXECUTE,
107 E2_RIC_REQUEST_CAUSE_UNSPECIFIED,
108 E2_RIC_SUBSCRIPTION_END_TIME_EXPIRED,
109 E2_RIC_SUBSCRIPTION_END_TIME_INVALID,
110 E2_DUPLICATE_RIC_REQUEST_ID,
111 E2_EVENT_TRIGGER_NOT_SUPPORTED,
112 E2_REQUEST_INFORMATION_UNAVAILABLE,
113 E2_INVALID_INFORMATION_REQUEST
118 E2_RAN_FUNCTION_NOT_SUPPORTED,
119 E2_EXCESSIVE_FUNCTIONS,
120 E2_RIC_RESOURCE_LIMIT,
125 E2_NODE_COMPONENT_UNKNOWN
130 E2_TRANSPORT_CAUSE_UNSPECIFIED,
131 E2_TRANSPORT_RESOURCE_UNAVAILABLE
136 E2_TRANSFER_SYNTAX_ERROR,
137 E2_ABSTRACT_SYNTAX_ERROR_REJECT,
138 E2_ABSTRACT_SYNTAX_ERROR_IGNORE_AND_NOTIFY,
139 E2_MESSAGE_NOT_COMPATIBLE_WITH_RECEIVER_STATE,
141 E2_ABSTRACT_SYNTAX_ERROR_FALSELY_CONSTRUCTED_MESSAGE,
142 E2_PROTOCOL_CAUSE_UNSPECIFIED
147 E2_CONTROL_PROCESSING_OVERLOAD,
150 E2_MISCELLANEOUS_CAUSE_UNSPECIFIED
164 typedef uint8_t E2Cause;
168 uint8_t transactionId;
169 uint8_t procedureCode;
172 typedef struct e2Transcation
174 uint8_t transIdCounter;
175 E2TransInfo onGoingTransaction[MAX_NUM_TRANSACTION];
176 /* Any new parameter for transaction handling can be added here in future */
179 typedef struct e2Timer
181 CmTimer e2SetupTimer;
182 /* More timers can be added to this structure in future */
186 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.4 */
190 uint32_t nearRtRicId;
193 /* O-RAN.WG3.E2SM-R003-v03.00 : Section 6.2.2.1 */
196 char shortName[STRING_SIZE_150_BYTES];
197 char serviceModelOID[STRING_SIZE_1000_BYTES];
198 char description[STRING_SIZE_150_BYTES];
201 /* O-RAN.WG3.E2SM-R003-v03.00 : Section 6.2.2.2-6.2.2.4 */
205 char name[STRING_SIZE_150_BYTES];
209 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.2.1 */
212 char measurementTypeName[STRING_SIZE_150_BYTES];
213 uint16_t measurementTypeId;
214 }MeasurementInfoForAction;
218 RicStyle reportStyle;
219 CmLListCp measurementInfoList;
222 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.7 */
225 uint16_t requestorId;
229 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.1.1 */
232 uint32_t reportingPeriod;
233 }EventTriggerFormat1;
235 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.1 */
241 EventTriggerFormat1 format1;
242 /* More formats can be added in future */
244 }EventTriggerDefinition;
246 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.3.11 */
249 /* TODO : To be added when list of KPIs are finalised */
252 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.1 */
257 char measurementTypeName[STRING_SIZE_150_BYTES];
258 uint16_t measurementTypeId;
260 uint32_t numOfLabels;
261 LabelInfo LabelInfoList[MAX_LABEL_INFO];
264 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.1 */
267 uint16_t numOfMeasuermentInfo;
268 MeasurementInfo **measurementInfoList;
269 uint32_t granularityPeriod; /* In millisecond */
272 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.2 */
275 /* TODO : This format will be defined in future if required */
278 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.3 */
281 /* TODO : This format will be defined in future if required */
284 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.4 */
287 /* TODO : This format will be defined in future if required */
290 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.5 */
293 /* TODO : This format will be defined in future if required */
296 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2 */
302 ActionDefFormat1 format1;
303 ActionDefFormat2 format2;
304 ActionDefFormat3 format3;
305 ActionDefFormat4 format4;
306 ActionDefFormat5 format5;
310 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 : maxofRICActionID */
315 ActionDefinition definition;
318 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 : maxofRICActionID */
321 RicRequestId requestId;
322 EventTriggerDefinition eventTriggerDefinition;
323 uint8_t numOfActions;
324 ActionInfo actionSequence[MAX_RIC_ACTION];
329 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.2.1 */
331 RanFunctionName name;
332 uint16_t revisionCounter;
333 uint8_t numOfEventTriggerStyleSupported;
334 RicStyle eventTriggerStyleList[MAX_RIC_STYLES];
335 uint8_t numOfReportStyleSupported;
336 RicReportStyle reportStyleList[MAX_RIC_STYLES];
337 uint8_t ricIndicationHeaderFormat;
338 uint8_t ricIndicationMessageFormat;
339 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 */
340 CmLListCp subscriptionList;
343 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.26-9.2.27 */
346 InterfaceType interfaceType;
347 uint64_t componentId;
348 ComponentActionType componentActionType;
350 uint8_t *componentRequestPart;
352 uint8_t *componentResponsePart;
355 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.29 */
357 typedef struct e2Ipaddr
365 E2IpAddr localIpAddress;
367 E2IpAddr destIpAddress;
372 typedef struct e2TimersInfo
375 uint8_t e2SetupTimerInterval;
382 E2Transaction e2TransInfo;
383 uint16_t numOfRanFunction;
384 RanFunction ranFunction[MAX_RAN_FUNCTION];
385 CmLListCp e2NodeComponentList;
386 uint8_t numOfTNLAssoc;
387 TNLAssociation tnlAssoc[MAX_TNL_ASSOCIATION];
388 E2TimersInfo e2TimersInfo;
391 uint8_t assignTransactionId();
392 uint8_t ResetE2Request(E2ProcedureDirection dir, E2CauseType type, E2Cause cause);
393 uint8_t SendE2APMsg(Region region, Pool pool, char *encBuf, int encBufSize);
394 /**********************************************************************
396 **********************************************************************/