From 96c9b882e2aed3838bcec26689dda01b3d11bc94 Mon Sep 17 00:00:00 2001 From: "aa7133@att.com" Date: Wed, 25 Mar 2020 14:50:40 +0200 Subject: [PATCH] version 4.0.5 Fix bug in reading the PLMN-ID (wrong byte reading). Add extra debuging in Debug mode for setup request Change-Id: I3210da1f72a3f80201d02f5e4227ce7d040776ed Signed-off-by: aa7133@att.com --- RIC-E2-TERMINATION/BuildRunName.h | 10 +++-- RIC-E2-TERMINATION/container-tag.yaml | 2 +- RIC-E2-TERMINATION/sctpThread.cpp | 80 +++++++++++++++++------------------ 3 files changed, 47 insertions(+), 45 deletions(-) diff --git a/RIC-E2-TERMINATION/BuildRunName.h b/RIC-E2-TERMINATION/BuildRunName.h index 94f822c..801f365 100644 --- a/RIC-E2-TERMINATION/BuildRunName.h +++ b/RIC-E2-TERMINATION/BuildRunName.h @@ -27,17 +27,19 @@ #include "oranE2/GlobalE2node-ng-eNB-ID.h" #include "oranE2/GlobalE2node-eNB-ID.h" -/** - * return the size of the string +/** 02 F8 29 + * return the size of the string // */ static int translatePlmnId(char * plmnId, const unsigned char *data, const char* type) { auto mcc1 = (unsigned char)((unsigned char)data[0] & (unsigned char)0x0F); auto mcc2 = (unsigned char)(((unsigned char)((unsigned char)data[0] & (unsigned char)0xF0)) >> (unsigned char)4); - auto mcc3 = (unsigned char)((data[1] & (unsigned char)0xF0) >> (unsigned char)4); + ///auto mcc3 = (unsigned char)((data[1] & (unsigned char)0xF0) >> (unsigned char)4); + auto mcc3 = (unsigned char)((unsigned char)(data[1] & (unsigned char)0x0F)); auto mnc1 = (unsigned char)(data[2] & (unsigned char)0x0F); auto mnc2 = (unsigned char)(((unsigned char)(data[2] & (unsigned char)0xF0) >> (unsigned char)4)); - auto mnc3 = (unsigned char)(((unsigned char)(data[1] & (unsigned char)0x0F) >> (unsigned char)4) ); + //auto mnc3 = (unsigned char)(((unsigned char)(data[1] & (unsigned char)0x0F) >> (unsigned char)4) ); + auto mnc3 = (unsigned char)((data[1] & (unsigned char)0xF0) >> (unsigned char)4); int j = 0; if (mnc3 != 15) { diff --git a/RIC-E2-TERMINATION/container-tag.yaml b/RIC-E2-TERMINATION/container-tag.yaml index eddbe6a..4c2e769 100644 --- a/RIC-E2-TERMINATION/container-tag.yaml +++ b/RIC-E2-TERMINATION/container-tag.yaml @@ -1,3 +1,3 @@ # The Jenkins job requires a tag to build the Docker image. # Global-JJB script assumes this file is in the repo root. -tag: 4.0.4 +tag: 4.0.5 diff --git a/RIC-E2-TERMINATION/sctpThread.cpp b/RIC-E2-TERMINATION/sctpThread.cpp index d4f5d6a..e2f6e8b 100644 --- a/RIC-E2-TERMINATION/sctpThread.cpp +++ b/RIC-E2-TERMINATION/sctpThread.cpp @@ -233,8 +233,8 @@ int buildConfiguration(sctp_params_t &sctpParams) { jsonTrace = sctpParams.trace; sctpParams.ka_message_length = snprintf(sctpParams.ka_message, KA_MESSAGE_SIZE, "{\"address\": \"%s:%d\"," - "\"fqdn\": \"%s\"," - "\"pod_name\": \"%s\"}", + "\"fqdn\": \"%s\"," + "\"pod_name\": \"%s\"}", (const char *)sctpParams.myIP.c_str(), sctpParams.rmrPort, sctpParams.fqdn.c_str(), @@ -473,12 +473,12 @@ int buildInotify(sctp_params_t &sctpParams) { } sctpParams.inotifyWD = inotify_add_watch(sctpParams.inotifyFD, - (const char *)sctpParams.configFilePath.c_str(), + (const char *)sctpParams.configFilePath.c_str(), (unsigned)IN_OPEN | (unsigned)IN_CLOSE_WRITE | (unsigned)IN_CLOSE_NOWRITE); //IN_CLOSE = (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) if (sctpParams.inotifyWD == -1) { mdclog_write(MDCLOG_ERR, "Failed to add directory : %s to inotify (inotify_add_watch) %s", - sctpParams.configFilePath.c_str(), - strerror(errno)); + sctpParams.configFilePath.c_str(), + strerror(errno)); close(sctpParams.inotifyFD); return -1; } @@ -612,8 +612,8 @@ void listener(sctp_params_t *params) { break; } auto ans = getnameinfo(&in_addr, in_len, - peerInfo->hostName, NI_MAXHOST, - peerInfo->portNumber, NI_MAXSERV, (unsigned )((unsigned int)NI_NUMERICHOST | (unsigned int)NI_NUMERICSERV)); + peerInfo->hostName, NI_MAXHOST, + peerInfo->portNumber, NI_MAXSERV, (unsigned )((unsigned int)NI_NUMERICHOST | (unsigned int)NI_NUMERICSERV)); if (ans < 0) { mdclog_write(MDCLOG_ERR, "Failed to get info on connection request. %s\n", strerror(errno)); close(peerInfo->fileDescriptor); @@ -966,7 +966,7 @@ int sendSctpMsg(ConnectedCU_t *peerInfo, ReportingMessages_t &message, Sctp_Map_ if (loglevel >= MDCLOG_DEBUG) { mdclog_write(MDCLOG_DEBUG, "remove key = %s from %s at line %d", key, __FUNCTION__, __LINE__); } - auto tmp = m->find(key); + auto tmp = m->find(key); if (tmp) { free(tmp); } @@ -1051,7 +1051,7 @@ int receiveDataFromSctp(struct epoll_event *events, if (loglevel >= MDCLOG_DEBUG) { mdclog_write(MDCLOG_DEBUG, "Finish Read from SCTP %d fd message length = %ld", - message.peerInfo->fileDescriptor, message.message.asnLength); + message.peerInfo->fileDescriptor, message.message.asnLength); } memcpy(message.message.enodbName, message.peerInfo->enodbName, sizeof(message.peerInfo->enodbName)); @@ -1166,9 +1166,9 @@ int receiveDataFromSctp(struct epoll_event *events, } message.message.asnLength = rmrMessageBuffer.sendMessage->len = snprintf((char *)rmrMessageBuffer.sendMessage->payload, - 256, - "%s|CU disconnected unexpectedly", - message.peerInfo->enodbName); + 256, + "%s|CU disconnected unexpectedly", + message.peerInfo->enodbName); message.message.asndata = rmrMessageBuffer.sendMessage->payload; if (sendRequestToXapp(message, @@ -1203,14 +1203,14 @@ static void buildAndsendSetupRequest(ReportingMessages_t &message, memcpy(message.message.enodbName, message.peerInfo->enodbName, strlen(message.peerInfo->enodbName)); } // now we can send the data to e2Mgr - auto buffer_size = RECEIVE_SCTP_BUFFER_SIZE; + auto buffer_size = RECEIVE_SCTP_BUFFER_SIZE * 2; auto *rmrMsg = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, buffer_size); // add addrees to message // unsigned char *buffer = &rmrMsg->payload[j]; - unsigned char buffer[RECEIVE_SCTP_BUFFER_SIZE]; + unsigned char buffer[RECEIVE_SCTP_BUFFER_SIZE * 2]; // encode to xml asn_enc_rval_t er; er = asn_encode_to_buffer(nullptr, ATS_BASIC_XER, &asn_DEF_E2AP_PDU, pdu, buffer, buffer_size); @@ -1221,12 +1221,12 @@ static void buildAndsendSetupRequest(ReportingMessages_t &message, (int) buffer_size, asn_DEF_E2AP_PDU.name); } else { - rmrMsg->len = snprintf((char *)rmrMsg->payload, RECEIVE_SCTP_BUFFER_SIZE, "%s:%d|%s", - message.peerInfo->sctpParams->myIP.c_str(), - message.peerInfo->sctpParams->rmrPort, - buffer); - if (logLevel >= MDCLOG_INFO) { - mdclog_write(MDCLOG_INFO, "Setup request : %s\n", buffer); + rmrMsg->len = snprintf((char *)rmrMsg->payload, RECEIVE_SCTP_BUFFER_SIZE * 2, "%s:%d|%s", + message.peerInfo->sctpParams->myIP.c_str(), + message.peerInfo->sctpParams->rmrPort, + buffer); + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Setup request of size %d :\n %s\n", rmrMsg->len, rmrMsg->payload); } // send to RMR message.message.messageType = rmrMsg->mtype = RIC_E2_SETUP_REQ; @@ -1927,9 +1927,9 @@ int receiveXappMessages(Sctp_Map_t *sctpMap, message.message.asnLength = rmrMessageBuffer.sendMessage->len = snprintf((char *)rmrMessageBuffer.sendMessage->payload, - 256, - "%s|RIC_SCTP_CLEAR_ALL", - peerInfo->enodbName); + 256, + "%s|RIC_SCTP_CLEAR_ALL", + peerInfo->enodbName); message.message.asndata = rmrMessageBuffer.sendMessage->payload; mdclog_write(MDCLOG_INFO, "%s", message.message.asndata); if (sendRequestToXapp(message, RIC_SCTP_CONNECTION_FAILURE, rmrMessageBuffer) != 0) { @@ -1946,8 +1946,8 @@ int receiveXappMessages(Sctp_Map_t *sctpMap, case E2_TERM_KEEP_ALIVE_REQ: { // send message back rmr_bytes2payload(rmrMessageBuffer.sendMessage, - (unsigned char *)rmrMessageBuffer.ka_message, - rmrMessageBuffer.ka_message_len); + (unsigned char *)rmrMessageBuffer.ka_message, + rmrMessageBuffer.ka_message_len); rmrMessageBuffer.sendMessage->mtype = E2_TERM_KEEP_ALIVE_RESP; rmrMessageBuffer.sendMessage->state = 0; static unsigned char tx[32]; @@ -1959,7 +1959,7 @@ int receiveXappMessages(Sctp_Map_t *sctpMap, mdclog_write(MDCLOG_ERR, "Failed to send E2_TERM_KEEP_ALIVE_RESP RMR message returned NULL"); } else if (rmrMessageBuffer.sendMessage->state != 0) { mdclog_write(MDCLOG_ERR, "Failed to send E2_TERM_KEEP_ALIVE_RESP, on RMR state = %d ( %s)", - rmrMessageBuffer.sendMessage->state, translateRmrErrorMessages(rmrMessageBuffer.sendMessage->state).c_str()); + rmrMessageBuffer.sendMessage->state, translateRmrErrorMessages(rmrMessageBuffer.sendMessage->state).c_str()); } else if (mdclog_level_get() >= MDCLOG_DEBUG) { mdclog_write(MDCLOG_DEBUG, "Got Keep Alive Request send : %s", rmrMessageBuffer.ka_message); } @@ -2141,7 +2141,7 @@ int modifyToEpoll(int epoll_fd, if (mdclog_level_get() >= MDCLOG_DEBUG) { mdclog_write(MDCLOG_DEBUG, "remove key = %s from %s at line %d", key, __FUNCTION__, __LINE__); } - auto tmp = sctpMap->find(key); + auto tmp = sctpMap->find(key); if (tmp) { free(tmp); } @@ -2211,19 +2211,19 @@ void buildJsonMessage(ReportingMessages_t &message) { } snprintf(message.buffer, sizeof(message.buffer), - "{\"header\": {\"ts\": \"%ld.%09ld\"," - "\"ranName\": \"%s\"," - "\"messageType\": %d," - "\"direction\": \"%c\"}," - "\"base64Length\": %d," - "\"asnBase64\": \"%s\"}", - message.message.time.tv_sec, - message.message.time.tv_nsec, - message.message.enodbName, - message.message.messageType, - message.message.direction, - (int) message.outLen, - message.base64Data); + "{\"header\": {\"ts\": \"%ld.%09ld\"," + "\"ranName\": \"%s\"," + "\"messageType\": %d," + "\"direction\": \"%c\"}," + "\"base64Length\": %d," + "\"asnBase64\": \"%s\"}", + message.message.time.tv_sec, + message.message.time.tv_nsec, + message.message.enodbName, + message.message.messageType, + message.message.direction, + (int) message.outLen, + message.base64Data); static src::logger_mt &lg = my_logger::get(); BOOST_LOG(lg) << message.buffer; -- 2.16.6