version 3.0.4 add KeepAlive Support 66/1966/1
authoraa7133@att.com <aa7133@att.com>
Sun, 8 Dec 2019 13:48:12 +0000 (15:48 +0200)
committeraa7133@att.com <aa7133@att.com>
Sun, 8 Dec 2019 13:48:39 +0000 (15:48 +0200)
Change-Id: I41fec21d48d5330a5b5065d034b1c50429e61215
Signed-off-by: aa7133@att.com <aa7133@att.com>
RIC-E2-TERMINATION/Dockerfile
RIC-E2-TERMINATION/container-tag.yaml
RIC-E2-TERMINATION/sctpThread.cpp
RIC-E2-TERMINATION/sctpThread.h

index ad9eb3c..4f28bff 100644 (file)
@@ -28,10 +28,10 @@ RUN mkdir -p /opt/e2/RIC-E2-TERMINATION/ \
 COPY . /opt/e2/RIC-E2-TERMINATION/
 RUN mv /opt/e2/RIC-E2-TERMINATION/CMakeLists.txt /opt/e2/
 
-RUN wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr_1.12.0_amd64.deb/download.deb
-RUN dpkg -i rmr_1.12.0_amd64.deb
-RUN wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr-dev_1.12.0_amd64.deb/download.deb
-RUN dpkg -i rmr-dev_1.12.0_amd64.deb
+RUN wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr_1.13.0_amd64.deb/download.deb
+RUN dpkg -i rmr_1.13.0_amd64.deb
+RUN wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr-dev_1.13.0_amd64.deb/download.deb
+RUN dpkg -i rmr-dev_1.13.0_amd64.deb
 
 RUN apt-get install -y autoconf gawk libtool automake pkg-config autoconf-archive \
     && git clone http://gerrit.o-ran-sc.org/r/com/log \
index a34401d..4818173 100644 (file)
@@ -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: 3.0.3
+tag: 3.0.4
index 688f824..6874b4b 100644 (file)
@@ -94,7 +94,7 @@ int main(const int argc, char **argv) {
 
     cpuClock = approx_CPU_MHz(100);
 
-    mdclog_write(MDCLOG_ERR, "CPU speed %11.11f", cpuClock);
+    mdclog_write(MDCLOG_DEBUG, "CPU speed %11.11f", cpuClock);
     auto result = parse(argc, argv, sctpParams);
 
     path p = (sctpParams.configFilePath + "/" + sctpParams.configFileName).c_str();
@@ -441,6 +441,11 @@ void listener(sctp_params_t *params) {
 
     rmrMessageBuffer.rcvMessage = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, RECEIVE_XAPP_BUFFER_SIZE);
     rmrMessageBuffer.sendMessage = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, RECEIVE_XAPP_BUFFER_SIZE);
+    auto len = snprintf(rmrMessageBuffer.ka_message, 4096, "{\"address\": \"%s:%d\",\"fqdn\": \"%s\"}",
+                        (const char *) params->myIP.c_str(),
+                        params->rmrPort,
+                        params->fqdn.c_str());
+    rmrMessageBuffer.ka_message[len] = 0;
 
     ReportingMessages_t message {};
 
@@ -2076,6 +2081,25 @@ int receiveXappMessages(int epoll_fd,
             sctpMap->clear();
             break;
         }
+        case E2_TERM_KEEP_ALIVE_REQ: {
+            // send message back
+            rmr_bytes2payload(rmrMessageBuffer.sendMessage,
+                    (unsigned char *)rmrMessageBuffer.ka_message,
+                    rmrMessageBuffer.len);
+            rmrMessageBuffer.sendMessage->mtype = E2_TERM_KEEP_ALIVE_RESP;
+            rmrMessageBuffer.sendMessage->state = 0;
+            static unsigned char tx[32];
+            auto txLen = snprintf((char *) tx, sizeof tx, "%15ld", transactionCounter++);
+            rmr_bytes2xact(rmrMessageBuffer.sendMessage, tx, txLen);
+            rmrMessageBuffer.sendMessage = rmr_send_msg(rmrMessageBuffer.rmrCtx, rmrMessageBuffer.sendMessage);
+            if (rmrMessageBuffer.sendMessage == nullptr) {
+                rmrMessageBuffer.sendMessage = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, RECEIVE_XAPP_BUFFER_SIZE);
+                mdclog_write(MDCLOG_ERR, "Failed to send E2_TERM_KEEP_ALIVE_RESP");
+            } else if (rmrMessageBuffer.sendMessage->state != 0)  {
+                mdclog_write(MDCLOG_ERR, "Failed to send E2_TERM_KEEP_ALIVE_RESP");
+            }
+            break;
+        }
         default:
             mdclog_write(MDCLOG_WARN, "Message Type : %d is not seported", rmrMessageBuffer.rcvMessage->mtype);
             message.message.asndata = rmrMessageBuffer.rcvMessage->payload;
index 9602d43..6be9fbd 100644 (file)
@@ -143,6 +143,8 @@ typedef struct ConnectedCU {
 
 #define MAX_RMR_BUFF_ARRY 32
 typedef struct RmrMessagesBuffer {
+    char ka_message[4096] {};
+    int  len = 0;
     void *rmrCtx;
     rmr_mbuf_t *sendMessage;
     rmr_mbuf_t *sendBufferedMessages[MAX_RMR_BUFF_ARRY];