X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fric_stub%2Fric_stub.h;h=ce86d5f4e10ba736ca1386f0044e8efa73010e31;hb=2a310f38af13dafd243ef7b24d5a721ed34355b3;hp=c48775894925dcca32d710a53e3ce70fe9ef555e;hpb=8660dd47a5ef27b62300fabf6b027852f1d5d026;p=o-du%2Fl2.git diff --git a/src/ric_stub/ric_stub.h b/src/ric_stub/ric_stub.h index c48775894..ce86d5f4e 100644 --- a/src/ric_stub/ric_stub.h +++ b/src/ric_stub/ric_stub.h @@ -16,44 +16,42 @@ ################################################################################ *******************************************************************************/ -#ifndef __CU_MGR_MAIN_H__ -#define __CU_MGR_MAIN_H__ - - -#include "stdio.h" -#include "stdlib.h" -#include "string.h" -#include "stdbool.h" -#include "ctype.h" -#include "envopt.h" /* Environment options */ -#include "envdep.h" /* Environment dependent */ -#include "envind.h" /* Environment independent */ - -#include "gen.h" /* General */ -#include "ssi.h" /* System services */ -#include "ss_queue.h" -#include "ss_task.h" -#include "ss_msg.h" -#include "cm_inet.h" -#include "cm_llist.h" /* Common link list defines */ -#include "cm_hash.h" /* Common hashlist defines */ - -#include "gen.x" /* General */ -#include "ssi.x" /* System services */ -#include "ss_queue.x" -#include "ss_task.x" -#include "ss_msg.x" -#include "cm_lib.x" -#include "cm_inet.x" -#include "cm_llist.x" /* Common link list defines */ -#include "cm_hash.x" /* Common hashlist defines */ - -#include "du_log.h" -#define MAX_IPV6_LEN 16 +#ifndef __RIC_MGR_MAIN_H__ +#define __RIC_MGR_MAIN_H__ + +#define RIC_ID 1 +#define RIC_NAME "ORAN_OAM_RIC" + +#define DU_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0001" +#define RIC_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0011" + +#ifndef O1_ENABLE +#define LOCAL_IP_RIC "192.168.130.80" + +#define E2_SCTP_PORT 36421 +#define NUM_E2_ASSOC 1 +#define REMOTE_IP_DU (char*[]){"192.168.130.81", "192.168.130.83"} +#endif + +#define RRC_VER 0 +#define EXT_RRC_VER 5 +#define PLMN_MCC0 3 +#define PLMN_MCC1 1 +#define PLMN_MCC2 1 +#define PLMN_MNC0 4 +#define PLMN_MNC1 8 +#define PLMN_MNC2 0 + #define RIC_DU_NAME_LEN_MAX 30 /* Max length of RIC/DU name string */ #define RIC_APP_MEM_REG 1 #define RIC_POOL 1 +#define MAX_RAN_FUNCTION 256 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.2.2 : maxofRANfunctionID */ +#define MAX_NUM_TRANSACTION 256 /* As per, O-RAN WG3 E2AP v3.0, section 9.2.33 */ +#define MAX_E2_NODE_COMPONENT 1024 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.2.2 : maxofE2nodeComponents */ +#define MAX_RIC_ACTION 16 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 : maxofRICActionID */ +#define MAX_RIC_REQUEST 5 /* As per O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.7, max request is 65535. \ + * But for our internal testing purpose, keeping it to 5 for now */ /* allocate and zero out a static buffer */ #define RIC_ALLOC(_datPtr, _size) \ @@ -62,7 +60,7 @@ _ret = SGetSBuf(RIC_APP_MEM_REG, RIC_POOL, \ (Data **)&_datPtr, _size); \ if(_ret == ROK) \ - cmMemset((U8*)_datPtr, 0, _size); \ + memset(_datPtr, 0, _size); \ else \ _datPtr = NULLP; \ } @@ -72,44 +70,152 @@ SPutSBuf(RIC_APP_MEM_REG, RIC_POOL, \ (Data *)_datPtr, _size); -typedef struct ipAddr +#define SEARCH_DU_DB(_duIdx, _duId, _duDb){\ + _duDb = NULLP; \ + for(_duIdx=0; _duIdx < ricCb.numDu; _duIdx++)\ + {\ + if(ricCb.duInfo[_duIdx].duId == _duId)\ + {\ + _duDb = (&ricCb.duInfo[_duIdx]);\ + break; \ + }\ + }\ +} + +typedef enum { - Bool ipV4Pres; - U32 ipV4Addr; - Bool ipV6Pres; - U8 ipV6Addr[MAX_IPV6_LEN]; -}SctpIpAddr; + ADD_CONNECTION, + MODIFY_CONNECTION, + REMOVE_CONNECTION +}E2Connection; -typedef struct RrcVersion +/* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.26 */ +typedef enum { - U8 rrcVer; /* Latest RRC Version */ - U32 extRrcVer; /* Latest RRC version extended */ -}RrcVersion; + NG, + XN, + E1, + F1, + W1, + S1, + X2 +}InterfaceType; + +typedef struct +{ + uint16_t requestorId; + uint16_t instanceId; +}RicRequestId; -typedef struct sctpParamsRic +typedef struct { - SctpIpAddr duIpAddr; - U16 duPort; - SctpIpAddr ricIpAddr; - U16 ricPort; -}SctpParamsRic; + int16_t actionId; +}ActionInfo; -typedef struct fPLMN +typedef struct ricSubscription { - U8 mcc[3]; - U8 mnc[3]; -}Plmn; + RicRequestId requestId; + uint16_t ranFuncId; + CmLListCp actionSequence; +}RicSubscription; +typedef struct +{ + uint16_t id; + uint16_t revisionCounter; + CmLListCp subscriptionList; +}RanFunction; -typedef struct cuCfgParams +typedef struct +{ + InterfaceType interfaceType; + uint64_t componentId; +}E2NodeComponent; + +typedef struct duDb +{ + uint32_t duId; + uint8_t ricTransIdCounter; + uint16_t numOfRanFunction; + RanFunction ranFunction[MAX_RAN_FUNCTION]; + CmLListCp e2NodeComponent; +}DuDb; + +typedef struct ricCfgParams { - U32 cuId; - char cuName[RIC_DU_NAME_LEN_MAX]; - SctpParamsRic sctpParams; + uint32_t ricId; + char ricName[RIC_DU_NAME_LEN_MAX]; + RicSctpParams sctpParams; Plmn plmn; - RrcVersion rrcVersion; -}CuCfgParams; -CuCfgParams cuCfgParams; //global variable to hold all configs +}RicCfgParams; + +typedef struct cuGlobalCb +{ + RicCfgParams ricCfgParams; + uint8_t numDu; + DuDb duInfo[MAX_DU_SUPPORTED]; +}RicGlobalCb; + +extern RicGlobalCb ricCb; + +typedef struct +{ + uint8_t numOfRanFunAccepted; + RanFunction ranFunAcceptedList[MAX_RAN_FUNCTION]; + uint8_t numOfRanFuneRejected; + RanFunction ranFunRejectedList[MAX_RAN_FUNCTION]; +}RicTmpRanFunList; + +typedef struct actionFailed +{ + uint8_t actionId; + uint8_t failureType; + uint8_t cause; +}ActionFailed; + +typedef struct +{ + uint8_t numActionModified; + uint8_t actionModifiedList[MAX_RIC_ACTION]; + uint8_t numActionModFailed; + ActionFailed actionModFailedList[MAX_RIC_ACTION]; + uint8_t numActionRemoved; + uint8_t actionRemovedList[MAX_RIC_ACTION]; + uint8_t numActionRemovalFailed; + ActionFailed actionRemovalFailedList[MAX_RIC_ACTION]; +}RicTmpActionList; + +typedef struct e2NodeCfgItem +{ + E2NodeComponent componentInfo; + bool isSuccessful; +}E2NodeConfigItem; + +typedef struct e2NodeCfgList +{ + uint16_t addedE2NodeCount; + E2NodeConfigItem addedE2Node[MAX_E2_NODE_COMPONENT]; + uint16_t updatedE2NodeCount; + E2NodeConfigItem updatedE2Node[MAX_E2_NODE_COMPONENT]; + uint16_t removedE2NodeCount; + E2NodeConfigItem removedE2Node[MAX_E2_NODE_COMPONENT]; +}E2NodeConfigList; + +typedef struct ricSubsActionInfo +{ + ConfigType configType; + uint16_t actionId; +}RicSubsActionInfo; + +typedef struct ricSubsModReq +{ + uint16_t numOfActionToBeAdded; + ActionInfo actionToBeAdded[MAX_RIC_ACTION]; + uint16_t numOfActionToBeModify; + ActionInfo actionToBeModify[MAX_RIC_ACTION]; + uint16_t numOfActionToBeRemove; + ActionInfo actionToBeRemove[MAX_RIC_ACTION]; +}RicSubsModReq; void readRicCfg(); void cuAppInmsgHdlr(Buffer *mBuf);