X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=RIC-E2-TERMINATION%2FsctpThread.h;h=10f572bdd6514e48d289f9309f793f252d585b93;hb=93b6d9cd271359453e24a7ddf4158095287cbfc7;hp=543c94c74febff4a11804ba54c6085600006afaa;hpb=be92d71ad86a8dfd129f000db99d4cd661633160;p=ric-plt%2Fe2.git diff --git a/RIC-E2-TERMINATION/sctpThread.h b/RIC-E2-TERMINATION/sctpThread.h index 543c94c..10f572b 100644 --- a/RIC-E2-TERMINATION/sctpThread.h +++ b/RIC-E2-TERMINATION/sctpThread.h @@ -50,6 +50,7 @@ #include #include #include +#include #include #include @@ -83,10 +84,13 @@ #include "cxxopts.hpp" //#include "config-cpp/include/config-cpp/config-cpp.h" +#include +#include +#include +#include +#include -#ifdef __TRACING__ -#include "openTracing.h" -#endif +using namespace prometheus; #include "mapWrapper.h" @@ -108,16 +112,18 @@ namespace expr = boost::log::expressions; #define MAXEVENTS 128 -#define RECEIVE_SCTP_BUFFER_SIZE (8 * 1024) -#define RECEIVE_XAPP_BUFFER_SIZE RECEIVE_SCTP_BUFFER_SIZE +#define RECEIVE_SCTP_BUFFER_SIZE (256 * 1024) +#define RECEIVE_XAPP_BUFFER_SIZE RECEIVE_SCTP_BUFFER_SIZE typedef mapWrapper Sctp_Map_t; + #define VOLUME_URL_SIZE 256 #define KA_MESSAGE_SIZE 2048 typedef struct sctp_params { + int epollTimeOut = -1; uint16_t rmrPort = 0; uint16_t sctpPort = SRC_PORT; int epoll_fd = 0; @@ -129,7 +135,7 @@ typedef struct sctp_params { Sctp_Map_t *sctpMap = nullptr; char ka_message[KA_MESSAGE_SIZE] {}; int ka_message_length = 0; - char rmrAddress[256] {}; // "tcp:portnumber" "tcp:5566" listen to all address on port 5566 + char rmrAddress[256] {}; // "tcp:port number" "tcp:5566" listen to all address on port 5566 mdclog_severity_t logLevel = MDCLOG_INFO; char volume[VOLUME_URL_SIZE]; string myIP {}; @@ -138,9 +144,25 @@ typedef struct sctp_params { string configFilePath {}; string configFileName {}; bool trace = true; - //shared_timed_mutex fence; // moved to mapWrapper + shared_ptr prometheusRegistry; + string prometheusPort {"8088"}; + Family *prometheusFamily; + Exposer *prometheusExposer = nullptr; } sctp_params_t; +// RAN to RIC +#define IN_INITI 0 //INITIATING +#define IN_SUCC 1 //SUCCESSFUL +#define IN_UN_SUCC 2 //UN-Successful + +// RIC To RAN +#define OUT_INITI 3 //INITIATING +#define OUT_SUCC 4 //SUCCESSFUL +#define OUT_UN_SUCC 5 //UN-Successful + +#define MSG_COUNTER 0 +#define BYTES_COUNTER 1 + typedef struct ConnectedCU { int fileDescriptor = 0; char hostName[NI_MAXHOST] {}; @@ -152,17 +174,19 @@ typedef struct ConnectedCU { bool isConnected = false; bool gotSetup = false; sctp_params_t *sctpParams = nullptr; + Counter *counters[6][2][ProcedureCode_id_RICsubscriptionDelete + 1] {}; } ConnectedCU_t ; -#define MAX_RMR_BUFF_ARRY 32 + +#define MAX_RMR_BUFF_ARRAY 32 typedef struct RmrMessagesBuffer { char ka_message[KA_MESSAGE_SIZE] {}; int ka_message_len = 0; void *rmrCtx = nullptr; rmr_mbuf_t *sendMessage= nullptr; - rmr_mbuf_t *sendBufferedMessages[MAX_RMR_BUFF_ARRY] {}; + //rmr_mbuf_t *sendBufferedMessages[MAX_RMR_BUFF_ARRAY] {}; rmr_mbuf_t *rcvMessage= nullptr; - rmr_mbuf_t *rcvBufferedMessages[MAX_RMR_BUFF_ARRY] {}; + //rmr_mbuf_t *rcvBufferedMessages[MAX_RMR_BUFF_ARRAY] {}; } RmrMessagesBuffer_t; typedef struct formatedMessage { @@ -209,7 +233,6 @@ void handlepoll_error(struct epoll_event &event, void cleanHashEntry(ConnectedCU_t *peerInfo, Sctp_Map_t *m); -int getSetupRequestMetaData(ReportingMessages_t &message, char *data, char *host, uint16_t &port); /** * @@ -221,13 +244,13 @@ void getRequestMetaData(ReportingMessages_t &message, RmrMessagesBuffer_t &rmrMe /** * * @param sctpMap - * @param messagBuffer + * @param messageBuffer * @param message * @param failedMesgId * @return */ int sendMessagetoCu(Sctp_Map_t *sctpMap, - RmrMessagesBuffer_t &messagBuffer, + RmrMessagesBuffer_t &messageBuffer, ReportingMessages_t &message, int failedMesgId); @@ -291,38 +314,23 @@ void getRmrContext(sctp_params_t &pSctpParams); /** * - * @param epoll_fd - * @param rmrCtx * @param sctpMap - * @param messagBuffer + * @param rmrMessageBuffer + * @param ts * @return */ -int receiveXappMessages(int epoll_fd, - Sctp_Map_t *sctpMap, +int receiveXappMessages(Sctp_Map_t *sctpMap, RmrMessagesBuffer_t &rmrMessageBuffer, struct timespec &ts); /** * - * @param rmrMessageBuffer - * @param message - * @param epoll_fd - * @param sctpMap - * @return - */ -int connectToCUandSetUp(RmrMessagesBuffer_t &rmrMessageBuffer, - ReportingMessages_t &message, - int epoll_fd, - Sctp_Map_t *sctpMap); - -/** - * - * @param messagBuffer + * @param messageBuffer * @param failedMsgId * @param sctpMap * @return */ -int sendDirectionalSctpMsg(RmrMessagesBuffer_t &messagBuffer, +int sendDirectionalSctpMsg(RmrMessagesBuffer_t &messageBuffer, ReportingMessages_t &message, int failedMsgId, Sctp_Map_t *sctpMap); @@ -333,6 +341,7 @@ int sendDirectionalSctpMsg(RmrMessagesBuffer_t &messagBuffer, * @param rmrMessageBuffer */ void asnInitiatingRequest(E2AP_PDU_t *pdu, + Sctp_Map_t *sctpMap, ReportingMessages_t &message, RmrMessagesBuffer_t &rmrMessageBuffer); /** @@ -342,9 +351,9 @@ void asnInitiatingRequest(E2AP_PDU_t *pdu, * @param sctpMap * @param rmrMessageBuffer */ -void asnSuccsesfulMsg(E2AP_PDU_t *pdu, - ReportingMessages_t &message, +void asnSuccessfulMsg(E2AP_PDU_t *pdu, Sctp_Map_t *sctpMap, + ReportingMessages_t &message, RmrMessagesBuffer_t &rmrMessageBuffer); /** * @@ -354,8 +363,8 @@ void asnSuccsesfulMsg(E2AP_PDU_t *pdu, * @param rmrMessageBuffer */ void asnUnSuccsesfulMsg(E2AP_PDU_t *pdu, - ReportingMessages_t &message, Sctp_Map_t *sctpMap, + ReportingMessages_t &message, RmrMessagesBuffer_t &rmrMessageBuffer); /** @@ -402,6 +411,14 @@ void buildJsonMessage(ReportingMessages_t &message); */ string translateRmrErrorMessages(int state); +int buildConfiguration(sctp_params_t &sctpParams); +void startPrometheus(sctp_params_t &sctpParams); +static int enable_log_change_notify(const char* fileName); +static int register_log_change_notify(const char *fileName); +static void * monitor_loglevel_change_handler(void* arg); +void update_mdc_log_level_severity(char* log_level); +static char* parse_file(char* filename); + static inline uint64_t rdtscp(uint32_t &aux) { uint64_t rax,rdx; @@ -412,4 +429,10 @@ static inline uint64_t rdtscp(uint32_t &aux) { #define RIC_SCTP_CONNECTION_FAILURE 10080 #endif +#ifdef UNIT_TEST + #define FILE_DESCRIPTOR 53424 /*Dummy value for file descriptor only when UT is defined*/ +#endif + +int buildListeningPort(sctp_params_t &sctpParams); + #endif //X2_SCTP_THREAD_H