X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_e2ap_mgr.h;h=1ed73514f892c7126291d4341c03eb6d6b3dcf32;hb=49856df248fd976b4a9882ca4e650fc0bc3e4ee3;hp=5004628eaec3b64245b838bc89508a38ee275f5d;hpb=5b0a8c1ccec481f354d22c1dff57b35bf72a1622;p=o-du%2Fl2.git diff --git a/src/du_app/du_e2ap_mgr.h b/src/du_app/du_e2ap_mgr.h index 5004628ea..1ed73514f 100644 --- a/src/du_app/du_e2ap_mgr.h +++ b/src/du_app/du_e2ap_mgr.h @@ -17,10 +17,17 @@ *******************************************************************************/ /* This file contains all E2AP message handler related functionality */ - -#define MAX_NUM_TRANSACTION 256 /* As per, O-RAN WG3 E2AP v3.0, section 9.2.33 */ #define MAX_E2_SETUP_TMR 1 +#define MAX_E2_NODE_CONFIG_UPDATE_TMR 1 +#define MAX_RIC_SERVICE_UPDATE_TMR 1 +#define MAX_RIC_SUBSCRIPTION_REPORTING_TMR 1 + #define EVENT_E2_SETUP_TMR 1 +#define EVENT_RIC_SERVICE_UPDATE_TMR 2 +#define EVENT_E2_NODE_CONFIG_UPDATE_TMR 3 +#define EVENT_RIC_SUBSCRIPTION_REPORTING_TMR 4 + +#define MAX_NUM_TRANSACTION 256 /* As per, O-RAN WG3 E2AP v3.0, section 9.2.33 */ #define MAX_RAN_FUNCTION 256 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.2.2 : maxofRANfunctionID */ #define MAX_E2_NODE_COMPONENT 1024 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.2.2 : maxofE2nodeComponents */ #define MAX_TNL_ASSOCIATION 32 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.2.11 : maxofTNLA */ @@ -29,26 +36,11 @@ #define MAX_LABEL_INFO 2147483648 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.1 : maxnoofLabelInfo */ #define MAX_RIC_ACTION 16 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 : maxofRICActionID */ #define MAX_RIC_REQUEST 65535 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.7 */ +#define MAX_PENDING_SUBSCRIPTION_RSP 5 /* Number of statistics request in processing */ #define STRING_SIZE_150_BYTES 150 #define STRING_SIZE_1000_BYTES 1000 -#define SHORT_NAME "ORAN-E2SM-KPM" -#define SERVICE_MODEL_OID "1.3.6.1.4.1.53148.1.2.2.2" -#define DESCRIPTION "KPM Monitor" -#define NUM_OF_EVENT_TRIGGER_STYLE_SUPPORTED 1 -#define EVENT_TRIGGER_STYLE_NAME "Periodic Report" -#define EVENT_TRIGGER_STYLE_TYPE 1 -#define EVENT_TRIGGER_STYLE_FORMAT_TYPE 1 -#define NUM_OF_RIC_REPORT_STYLE_SUPPORTED 1 -#define REPORT_STYLE_NAME "E2 Node Measurement" -#define REPORT_STYLE_TYPE 1 -#define REPORT_ACTION_FORMAT_TYPE 1 -#define NUM_OF_MEASUREMENT_INFO_SUPPORTED 2 -#define MEASUREMENT_TYPE_NAME (char*[]) {"RRU.PrbTotDl", "RRU.PrbTotUl"} -#define RIC_INDICATION_HEADER_FORMAT 1 -#define RIC_INDICATION_MESSAGE_FORMAT 1 - /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.26 */ typedef enum { @@ -64,9 +56,11 @@ typedef enum typedef enum { E2_NODE_COMPONENT_ADD, - E2_NODE_COMPONENT_UPDATE + E2_NODE_COMPONENT_UPDATE, + E2_NODE_COMPONENT_DEL }ComponentActionType; + /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.30 */ typedef enum { @@ -78,8 +72,8 @@ typedef enum /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.11 */ typedef enum { - INSERT, REPORT, + INSERT, POLICY }ActionType; @@ -163,6 +157,12 @@ typedef enum typedef uint8_t E2Cause; +typedef struct e2FailureCause +{ + E2CauseType causeType; + uint8_t cause; +}E2FailureCause; + typedef struct { uint8_t transactionId; @@ -171,14 +171,67 @@ typedef struct typedef struct e2Transcation { - uint8_t transIdCounter; - E2TransInfo onGoingTransaction[MAX_NUM_TRANSACTION]; - /* Any new parameter for transaction handling can be added here in future */ + uint8_t transIdCounter; /* counting the total number of DU initiated transaction */ + E2TransInfo e2InitTransaction[MAX_NUM_TRANSACTION]; /* Storing DU-initiated transactions information */ + E2TransInfo ricInitTransaction[MAX_NUM_TRANSACTION]; /* Storing RIC-initiated transactions information */ }E2Transaction; +typedef struct +{ + uint16_t id; + uint16_t revisionCounter; +}RanFuncInfo; + +typedef struct +{ + uint8_t numOfRanFunToBeAdded; + RanFuncInfo ranFunToBeAdded[MAX_RAN_FUNCTION]; + uint8_t numOfRanFunToBeModified; + RanFuncInfo ranFunToBeModified[MAX_RAN_FUNCTION]; + uint8_t numOfRanFunToBeDeleted; + RanFuncInfo ranFunToBeDeleted[MAX_RAN_FUNCTION]; +}E2TmpRanFunList; + +typedef struct ricServiceUpdate +{ + E2ProcedureDirection dir; + uint8_t transId; + E2TmpRanFunList recvRanFuncList; +}RicServiceUpdate; + +typedef struct +{ + RicServiceUpdate ricService; + CmTimer timer; +}RicServiceUpdateTimer; + +typedef struct e2NodeCfgItem +{ + InterfaceType interface; + uint64_t componentId; +}E2NodeConfigItem; + +typedef struct e2NodeCfgList +{ + uint16_t addE2NodeCount; + E2NodeConfigItem addE2Node[MAX_E2_NODE_COMPONENT]; + uint16_t updateE2NodeCount; + E2NodeConfigItem updateE2Node[MAX_E2_NODE_COMPONENT]; + uint16_t removeE2NodeCount; + E2NodeConfigItem removeE2Node[MAX_E2_NODE_COMPONENT]; +}E2NodeConfigList; + +typedef struct +{ + E2NodeConfigList configList; + CmTimer timer; +}E2NodeConfigUpdateTimer; + typedef struct e2Timer { CmTimer e2SetupTimer; + RicServiceUpdateTimer ricServiceUpdateTimer; + E2NodeConfigUpdateTimer e2NodeConfigUpdate; /* More timers can be added to this structure in future */ }E2Timer; @@ -226,10 +279,17 @@ typedef struct uint16_t instanceId; }RicRequestId; +typedef struct reportStartTime +{ + uint32_t timeInSec; + uint32_t timeInMilliSec; +}ReportStartTime; + /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.1.1 */ typedef struct { - uint32_t reportingPeriod; + uint32_t reportingPeriod; /* In milliseconds */ + ReportStartTime startTime; }EventTriggerFormat1; /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.1 */ @@ -246,27 +306,28 @@ typedef struct /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.3.11 */ typedef struct { - /* TODO : To be added when list of KPIs are finalised */ + /* TODO : To be added in future when subcounters for any + * measurment type is required */ }LabelInfo; /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.1 */ typedef struct { - union - { - char measurementTypeName[STRING_SIZE_150_BYTES]; - uint16_t measurementTypeId; - }choice; - uint32_t numOfLabels; - LabelInfo LabelInfoList[MAX_LABEL_INFO]; + char measurementTypeName[STRING_SIZE_150_BYTES]; + uint16_t measurementTypeId; + + /* As of now Labels are not used, hence it is not implemented completely */ + //uint32_t numOfLabels; + //LabelInfo LabelInfoList[MAX_LABEL_INFO]; + + CmLListCp measuredValue; /* To be filled when numOfLabels is 0, else values are calculated per Label */ }MeasurementInfo; /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.1 */ typedef struct { - uint16_t numOfMeasuermentInfo; - MeasurementInfo **measurementInfoList; - uint32_t granularityPeriod; /* In millisecond */ + CmLListCp measurementInfoList; /* Each node corresponds to MeasurementInfo */ + uint32_t granularityPeriod; /* In millisecond */ }ActionDefFormat1; /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.2 */ @@ -297,6 +358,7 @@ typedef struct typedef struct { uint8_t styleType; + uint8_t formatType; union { ActionDefFormat1 format1; @@ -310,20 +372,61 @@ typedef struct /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 : maxofRICActionID */ typedef struct { - uint8_t id; + int16_t actionId; /* O-RAN.WG3.E2AP-R003-v03.00 Section 9.2.10. Valid action id range = 0..255 */ ActionType type; ActionDefinition definition; + ConfigType action; + E2FailureCause failureCause; /* Used only when an action is required to be deleted */ }ActionInfo; /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 : maxofRICActionID */ typedef struct { RicRequestId requestId; + uint16_t ranFuncId; EventTriggerDefinition eventTriggerDefinition; - uint8_t numOfActions; - ActionInfo actionSequence[MAX_RIC_ACTION]; + CmLListCp actionSequence; + CmTimer ricSubsReportTimer; + ConfigType action; + E2FailureCause failureCause; /* Used only when a subscription is required to be deleted */ }RicSubscription; +typedef struct rejectedAction +{ + uint8_t id; + E2FailureCause failureCause; +}RejectedAction; + +typedef struct pendingSubsRspInfo +{ + RicRequestId requestId; + uint16_t ranFuncId; + uint8_t numOfAcceptedActions; + uint8_t acceptedActionList[MAX_RIC_ACTION]; + uint8_t numOfRejectedActions; + RejectedAction rejectedActionList[MAX_RIC_ACTION]; +}PendingSubsRspInfo; + +typedef struct actionStatus +{ + uint8_t numOfAcceptedActions; + uint8_t acceptedActionList[MAX_RIC_ACTION]; + uint8_t numOfRejectedActions; + RejectedAction rejectedActionList[MAX_RIC_ACTION]; +}ActionStatus; + +typedef struct pendingSubsModRspInfo +{ + RicRequestId requestId; + uint16_t ranFuncId; + bool addActionCompleted; + ActionStatus addActionStatus; + bool modActionCompleted; + ActionStatus modActionStatus; + bool removeActionCompleted; + ActionStatus removeActionStatus; +}PendingSubsModRspInfo; + typedef struct { /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.2.1 */ @@ -338,18 +441,28 @@ typedef struct uint8_t ricIndicationMessageFormat; /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 */ CmLListCp subscriptionList; + uint8_t numPendingSubsRsp; + PendingSubsRspInfo pendingSubsRspInfo[MAX_PENDING_SUBSCRIPTION_RSP]; + uint8_t numPendingSubsModRsp; + PendingSubsModRspInfo pendingSubsModRspInfo[MAX_PENDING_SUBSCRIPTION_RSP]; }RanFunction; /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.26-9.2.27 */ typedef struct { - InterfaceType interfaceType; - uint64_t componentId; - ComponentActionType componentActionType; - uint8_t reqBufSize; - uint8_t *componentRequestPart; - uint8_t rspBufSize; - uint8_t *componentResponsePart; + uint8_t reqBufSize; + uint8_t *componentRequestPart; + uint8_t rspBufSize; + uint8_t *componentResponsePart; +}E2NodeConfig; + +typedef struct +{ + InterfaceType interfaceType; + uint64_t componentId; + E2NodeConfig *addConfiguration; + E2NodeConfig *updateConfiguration; + bool deleteConfiguration; }E2NodeComponent; /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.29 */ @@ -388,9 +501,51 @@ typedef struct E2TimersInfo e2TimersInfo; }E2apDb; +typedef struct e2ConnectionItem +{ + uint32_t ipV4Addr; + AssocUsage usage; +}E2ConnectionItem; + +typedef struct e2ConnectionList +{ + uint8_t numOfE2ConnectionSetup; + E2ConnectionItem setupE2Connection[MAX_TNL_ASSOCIATION]; + uint8_t numOfE2ConnectionFailedToSetup; + E2ConnectionItem failedToSetupE2Connection[MAX_TNL_ASSOCIATION]; +}E2ConnectionList; + uint8_t assignTransactionId(); -uint8_t ResetE2Request(E2ProcedureDirection dir, E2CauseType type, E2Cause cause); +ActionInfo *fetchActionInfoFromActionId(uint8_t actionId, RicSubscription *ricSubscriptionInfo, CmLList ** actionNode, ConfigType configType); +RicSubscription *fetchSubsInfoFromRicReqId(RicRequestId ricReqId, RanFunction *ranFuncDb, CmLList **ricSubscriptionNode); +RanFunction *fetchRanFuncFromRanFuncId(uint16_t ranFuncId); +uint8_t fetchSubsInfoFromSubsId(uint64_t subscriptionId, RanFunction **ranFuncDb, CmLList **ricSubscriptionNode, \ + RicSubscription **ricSubscriptionInfo); +void fetchRicSubsToBeDeleted(CmLListCp *ricSubsToBeDelList); + +uint8_t fillRicSubsInMacStatsReq(MacStatsReq *macStatsReq, RicSubscription* ricSubscriptionInfo); +uint8_t e2ProcStatsRsp(MacStatsRsp *statsRsp); +uint8_t e2ProcStatsInd(MacStatsInd *statsInd); +void E2apHdlRicSubsReportTmrExp(RicSubscription *ricSubscription); + +uint8_t ResetE2Request(E2ProcedureDirection dir, E2FailureCause resetCause); uint8_t SendE2APMsg(Region region, Pool pool, char *encBuf, int encBufSize); +E2NodeComponent *fetchE2NodeComponentInfo(InterfaceType interfaceType, uint64_t componentId, CmLList **e2ComponentNode); +uint8_t fillE2NodeComponentReqInfo(InterfaceType interfaceType, uint64_t componentId, uint8_t action, uint8_t bufSize, char *bufString); +uint8_t fillE2NodeComponentRspInfo(InterfaceType interfaceType, uint64_t componentId, uint8_t action, uint8_t bufSize, char *bufString); +void deleteRicSubscriptionList(CmLListCp *subscriptionList); +void deleteRicSubscriptionNode(CmLList *ricSubscriptionInfo); +void deleteMeasurementInfoList(CmLListCp *measInfoList); +void deleteActionSequence(CmLList *action); +void deleteMeasuredValueList(CmLListCp *measuredValueList); +void removeE2NodeInformation(); +void encodeSubscriptionId(uint64_t *subscriptionId, uint16_t ranFuncId, RicRequestId ricReqId); +uint8_t e2ProcStatsDeleteRsp(MacStatsDeleteRsp *statsDeleteRsp); +uint8_t fillRicSubsInMacStatsModificationReq(MacStatsModificationReq *macStatsModReq, RicSubscription* ricSubscriptionInfo); +uint8_t e2ProcActionDeleteRsp(MacStatsDeleteRsp *statsDeleteRsp); +uint8_t e2ProcStatsModificationRsp(MacStatsModificationRsp *statsModificationRsp); +uint8_t duProcPendingSubsModRsp(RicSubscription *ricSubscriptionInfo, PendingSubsModRspInfo *pendingSubsModRsp); + /********************************************************************** End of file **********************************************************************/