5.0.1 update library copy in Docker file to libcur-gnutls version 4.5.0 42/3942/1 PI5
authoraa7133@att.com <aa7133@att.com>
Mon, 1 Jun 2020 21:25:17 +0000 (00:25 +0300)
committeraa7133@att.com <aa7133@att.com>
Mon, 1 Jun 2020 21:25:39 +0000 (00:25 +0300)
Fix problem in the timeout values in the epoll_wait
add E2SM-KPM text file

Change-Id: Ie1c6b2bfbde9318621e47a3ed96927f874a3bbfb
Signed-off-by: aa7133@att.com <aa7133@att.com>
RIC-E2-TERMINATION/3rdparty/asnTextFiles/E2SM-KPM-v01.00.asn [new file with mode: 0644]
RIC-E2-TERMINATION/Dockerfile
RIC-E2-TERMINATION/sctpThread.cpp

diff --git a/RIC-E2-TERMINATION/3rdparty/asnTextFiles/E2SM-KPM-v01.00.asn b/RIC-E2-TERMINATION/3rdparty/asnTextFiles/E2SM-KPM-v01.00.asn
new file mode 100644 (file)
index 0000000..21f8fcf
--- /dev/null
@@ -0,0 +1,427 @@
+-- ASN1START
+-- **************************************************************
+-- E2SM-KPM
+-- Information Element Definitions
+--
+-- **************************************************************
+
+
+E2SM-KPM-IEs {
+iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2sm(2) e2sm-KPMMON-IEs (2)}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+-- IEs
+-- **************************************************************
+
+-- **************************************************************
+
+GlobalKPMnode-ID ::= CHOICE{
+       gNB                                     GlobalKPMnode-gNB-ID,
+       en-gNB                          GlobalKPMnode-en-gNB-ID,
+       ng-eNB                          GlobalKPMnode-ng-eNB-ID,
+       eNB                                     GlobalKPMnode-eNB-ID,
+       ...
+}
+
+-- **************************************************************
+
+GlobalKPMnode-gNB-ID ::= SEQUENCE{
+       global-gNB-ID           GlobalgNB-ID,
+       gNB-CU-UP-ID            GNB-CU-UP-ID    OPTIONAL,
+       gNB-DU-ID                       GNB-DU-ID               OPTIONAL,
+       ...
+}
+
+GlobalgNB-ID   ::= SEQUENCE {
+       plmn-id                         PLMN-Identity,
+       gnb-id                          GNB-ID-Choice,
+       ...
+}
+
+GNB-CU-UP-ID ::=       INTEGER (0..68719476735)
+GNB-DU-ID ::=          INTEGER (0..68719476735)
+
+GNB-ID-Choice ::= CHOICE {
+       gnb-ID                                  BIT STRING (SIZE(22..32)),
+       ...
+}
+
+-- **************************************************************
+
+GlobalKPMnode-en-gNB-ID ::= SEQUENCE{
+       global-gNB-ID           GlobalenGNB-ID,
+       ...
+}
+
+GlobalenGNB-ID ::= SEQUENCE {
+       pLMN-Identity           PLMN-Identity,
+       gNB-ID                          ENGNB-ID,
+       ...
+}
+
+ENGNB-ID ::= CHOICE {
+       gNB-ID  BIT STRING (SIZE (22..32)),
+       ...
+}
+
+-- **************************************************************
+
+GlobalKPMnode-ng-eNB-ID ::= SEQUENCE{
+       global-ng-eNB-ID        GlobalngeNB-ID,
+       ...
+}
+
+GlobalngeNB-ID ::= SEQUENCE {
+       plmn-id                 PLMN-Identity,
+       enb-id                  ENB-ID-Choice,
+       ...
+}
+
+ENB-ID-Choice ::= CHOICE {
+       enb-ID-macro                    BIT STRING (SIZE(20)),
+       enb-ID-shortmacro               BIT STRING (SIZE(18)),
+       enb-ID-longmacro                BIT STRING (SIZE(21)),
+       ...
+}
+
+-- **************************************************************
+
+GlobalKPMnode-eNB-ID ::= SEQUENCE{
+       global-eNB-ID           GlobalENB-ID,
+       ...
+}
+
+GlobalENB-ID ::= SEQUENCE {
+       pLMN-Identity           PLMN-Identity,
+       eNB-ID                          ENB-ID,
+       ...
+}
+
+ENB-ID ::= CHOICE {
+       macro-eNB-ID                    BIT STRING (SIZE (20)),
+       home-eNB-ID                             BIT STRING (SIZE (28)),
+       ... ,
+       short-Macro-eNB-ID              BIT STRING (SIZE(18)),
+       long-Macro-eNB-ID               BIT STRING (SIZE(21))
+}
+
+
+NRCGI ::= SEQUENCE {
+       pLMN-Identity                   PLMN-Identity,
+       nRCellIdentity                  NRCellIdentity
+}
+
+PLMN-Identity ::= OCTET STRING (SIZE(3))
+
+NRCellIdentity ::= BIT STRING (SIZE(36))
+
+SNSSAI ::= SEQUENCE {
+       sST                     OCTET STRING (SIZE(1)),
+       sD                      OCTET STRING (SIZE(3))  OPTIONAL
+}
+
+-- **************************************************************
+--
+-- Lists
+--
+-- **************************************************************
+
+maxofMessageProtocolTests                      INTEGER ::= 15
+maxofRICstyles                                         INTEGER ::= 63
+maxnoofQCI                          INTEGER ::= 256
+maxnoofQoSFlows                     INTEGER ::= 64
+maxnoofSliceItems                   INTEGER ::= 1024
+maxnoofContainerListItems           INTEGER ::=  3
+maxCellingNBDU                      INTEGER ::= 512
+maxofContainers                     INTEGER ::= 8
+maxPLMN                             INTEGER ::= 12 -- Maximum number of PLMNs broadcast and reported by UE at establisghment
+
+RIC-Style-Type ::= INTEGER
+
+RIC-Style-Name ::= PrintableString(SIZE(1..150,...))
+
+RIC-Format-Type ::= INTEGER
+
+
+-- **************************************************************
+-- E2SM-KPM Service model IEs
+-- **************************************************************
+
+-- **************************************************************
+-- Event Trigger Definition OCTET STRING contents
+-- **************************************************************
+
+-- E2SM-KPM-EventTriggerDefinition IE
+E2SM-KPM-EventTriggerDefinition ::= CHOICE{
+       eventDefinition-Format1         E2SM-KPM-EventTriggerDefinition-Format1,
+       ...
+}
+
+-- E2SM-KPM-EventTriggerDefinition IE is used for Event Trigger Definition Format 1
+E2SM-KPM-EventTriggerDefinition-Format1 ::= SEQUENCE{
+       policyTest-List SEQUENCE (SIZE(1..maxofMessageProtocolTests)) OF Trigger-ConditionIE-Item OPTIONAL,
+       ...
+}
+
+-- **************************************************************
+-- Action Definition OCTET STRING contents
+-- **************************************************************
+
+-- E2SM-KPM-ActionDefinition IE
+E2SM-KPM-ActionDefinition ::= SEQUENCE{
+       ric-Style-Type                          RIC-Style-Type,
+       ...
+}
+
+-- **************************************************************
+-- Indication Header OCTET STRING contents
+-- **************************************************************
+
+-- E2SM-KPM-IndicationHeader IE
+E2SM-KPM-IndicationHeader ::= CHOICE{
+       indicationHeader-Format1                E2SM-KPM-IndicationHeader-Format1,
+       ...
+}
+
+-- E2SM-KPM-IndicationHeader Format 1
+E2SM-KPM-IndicationHeader-Format1 ::= SEQUENCE{
+       id-GlobalKPMnode-ID                     GlobalKPMnode-ID  OPTIONAL,
+       nRCGI                       NRCGI            OPTIONAL,
+    pLMN-Identity                      PLMN-Identity    OPTIONAL,
+       sliceID         SNSSAI           OPTIONAL,
+       fiveQI                                  INTEGER (0..255) OPTIONAL,
+    qci                         INTEGER (0..255) OPTIONAL,
+    ...
+}
+
+-- **************************************************************
+-- Indication Message OCTET STRING contents
+-- **************************************************************
+
+-- E2SM-KPM-IndicationMessage IE
+E2SM-KPM-IndicationMessage ::= CHOICE{
+       ric-Style-Type                          RIC-Style-Type,
+       indicationMessage-Format1               E2SM-KPM-IndicationMessage-Format1,
+       ...
+}
+
+-- E2SM-KPM-IndicationMessage-Format 1 IE
+E2SM-KPM-IndicationMessage-Format1 ::= SEQUENCE{
+    pm-Containers SEQUENCE (SIZE(1..maxCellingNBDU)) OF PM-Containers-List,
+    ...
+}
+
+PM-Containers-List ::= SEQUENCE{
+       performanceContainer        PF-Container    OPTIONAL,
+       theRANContainer             RAN-Container   OPTIONAL,
+       ...
+}
+
+-- ***************************************************************
+-- RAN Function Description OCTET STRING contents
+-- ***************************************************************
+
+-- E2SM-KPM-RANfunction-Description
+E2SM-KPM-RANfunction-Description ::= SEQUENCE{
+       ranFunction-Name        RANfunction-Name,
+    e2SM-KPM-RANfunction-Item SEQUENCE{
+           ric-EventTriggerStyle-List  SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-EventTriggerStyle-List OPTIONAL,
+           ric-ReportStyle-List                SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-ReportStyle-List OPTIONAL,
+           ...
+    },
+       ...
+}
+
+
+-- ***************************************************************
+-- commmon IEs
+-- ***************************************************************
+
+NI-Type ::= ENUMERATED{
+    x2-u,
+    xn-u,
+    f1-u,
+    ...
+}
+
+RAN-Container ::= OCTET STRING
+
+Trigger-ConditionIE-Item ::= SEQUENCE{
+       report-Period-IE                RT-Period-IE,
+       ...
+}
+
+RT-Period-IE ::= ENUMERATED{ ms10, ms20, ms32, ms40, ms60, ms64, ms70, ms80, ms128, ms160, ms256, ms320, ms512, ms640, ms1024, ms1280, ms2048, ms2560, ms5120, ms10240, ...}
+
+RANcallProcess-ID-string ::= PrintableString(SIZE(1..150,...))
+
+RANfunction-Name ::= SEQUENCE{
+    ranFunction-ShortName       PrintableString(SIZE(1..150,...)),
+    ranFunction-E2SM-OID               PrintableString(SIZE(1..1000,...)),
+    ranFunction-Description     PrintableString(SIZE(1..150,...)),
+    ranFunction-Instance        INTEGER OPTIONAL,
+    ...
+}
+
+RIC-EventTriggerStyle-List ::= SEQUENCE{
+       ric-EventTriggerStyle-Type                      RIC-Style-Type,
+       ric-EventTriggerStyle-Name                      RIC-Style-Name,
+       ric-EventTriggerFormat-Type                     RIC-Format-Type,
+       ...
+}
+
+RIC-ReportStyle-List ::= SEQUENCE{
+       ric-ReportStyle-Type                            RIC-Style-Type,
+       ric-ReportStyle-Name                            RIC-Style-Name,
+       ric-IndicationHeaderFormat-Type         RIC-Format-Type,
+       ric-IndicationMessageFormat-Type        RIC-Format-Type,
+       ...
+}
+
+PF-Container ::= CHOICE {
+       oDU             ODU-PF-Container,
+       oCU-CP  OCUCP-PF-Container,
+    oCU-UP       OCUUP-PF-Container
+}
+
+GNB-CU-CP-Name ::= PrintableString(SIZE(1..150,...))
+
+GNB-DU-Name ::= PrintableString(SIZE(1..150,...))
+
+GNB-CU-UP-Name ::= PrintableString(SIZE(1..150,...))
+
+
+-- **************************************************************
+-- O-DU Container IEs
+-- **************************************************************
+
+
+ODU-PF-Container ::= SEQUENCE{
+    cellResourceReportList SEQUENCE (SIZE(1..maxCellingNBDU)) OF CellResourceReportListItem,
+    ...
+}
+
+CellResourceReportListItem ::= SEQUENCE{
+    nRCGI                       NRCGI,
+    dl-TotalofAvailablePRBs     INTEGER (0..100) OPTIONAL,
+    ul-TotalofAvailablePRBs     INTEGER (0..100) OPTIONAL,
+    servedPlmnPerCellList       SEQUENCE (SIZE(1..maxPLMN)) OF ServedPlmnPerCellListItem,
+    ...
+}
+
+ServedPlmnPerCellListItem ::= SEQUENCE{
+       pLMN-Identity                   PLMN-Identity,
+    du-PM-5GC               FGC-DU-PM-Container OPTIONAL,
+    du-PM-EPC               EPC-DU-PM-Container OPTIONAL,
+    ...
+}
+
+FGC-DU-PM-Container ::= SEQUENCE{
+    slicePerPlmnPerCellList SEQUENCE (SIZE(1..maxnoofSliceItems)) OF SlicePerPlmnPerCellListItem,
+    ...
+}
+
+SlicePerPlmnPerCellListItem ::= SEQUENCE{
+    sliceID            SNSSAI,
+    fQIPERSlicesPerPlmnPerCellList SEQUENCE (SIZE(1..maxnoofQoSFlows)) OF FQIPERSlicesPerPlmnPerCellListItem,
+    ...
+}
+
+FQIPERSlicesPerPlmnPerCellListItem ::= SEQUENCE{
+    fiveQI                                INTEGER (0..255),
+    dl-PRBUsage            INTEGER (0..100) OPTIONAL,
+    ul-PRBUsage            INTEGER (0..100) OPTIONAL,
+    ...
+}
+
+EPC-DU-PM-Container ::= SEQUENCE{
+    perQCIReportList SEQUENCE (SIZE(1..maxnoofQCI)) OF PerQCIReportListItem,
+    ...
+}
+
+PerQCIReportListItem ::= SEQUENCE{
+    qci                    INTEGER (0..255),
+    dl-PRBUsage            INTEGER (0..100) OPTIONAL,
+    ul-PRBUsage            INTEGER (0..100) OPTIONAL,
+    ...
+}
+
+-- **************************************************************
+-- O-CUCP Container IEs
+-- **************************************************************
+
+
+OCUCP-PF-Container ::= SEQUENCE{
+    gNB-CU-CP-Name GNB-CU-CP-Name OPTIONAL,
+    cu-CP-Resource-Status SEQUENCE {
+        numberOfActive-UEs  INTEGER (1..65536, ...) OPTIONAL
+    }
+}
+
+-- **************************************************************
+-- O-CU-UP Container IEs
+-- **************************************************************
+
+OCUUP-PF-Container ::= SEQUENCE{
+    gNB-CU-UP-Name        GNB-CU-UP-Name OPTIONAL,
+    pf-ContainerList      SEQUENCE (SIZE(1..maxnoofContainerListItems)) OF PF-ContainerListItem,
+    ...
+}
+
+PF-ContainerListItem ::= SEQUENCE{
+    interface-type                               NI-Type,
+    o-CU-UP-PM-Container          CUUPMeasurement-Container,
+    ...
+}
+
+CUUPMeasurement-Container ::= SEQUENCE{
+    plmnList SEQUENCE (SIZE(1.. maxPLMN)) OF PlmnID-List,
+    ...
+}
+
+PlmnID-List ::= SEQUENCE{
+       pLMN-Identity                    PLMN-Identity,
+    cu-UP-PM-5GC             FGC-CUUP-PM-Format OPTIONAL,
+    cu-UP-PM-EPC             EPC-CUUP-PM-Format OPTIONAL,
+    ...
+}
+
+FGC-CUUP-PM-Format ::= SEQUENCE{
+    sliceToReportList SEQUENCE (SIZE(1..maxnoofSliceItems)) OF SliceToReportListItem,
+    ...
+}
+
+SliceToReportListItem ::= SEQUENCE{
+    sliceID            SNSSAI,
+    fQIPERSlicesPerPlmnList SEQUENCE (SIZE(1..maxnoofQoSFlows)) OF FQIPERSlicesPerPlmnListItem,
+    ...
+}
+
+FQIPERSlicesPerPlmnListItem ::= SEQUENCE{
+     fiveQI                                    INTEGER (0..255),
+     pDCPBytesDL            INTEGER (0..10000000000,...) OPTIONAL,
+     pDCPBytesUL            INTEGER (0..10000000000,...) OPTIONAL,
+     ...
+}
+
+EPC-CUUP-PM-Format ::= SEQUENCE{
+    perQCIReportList SEQUENCE (SIZE(1..maxnoofQCI)) OF PerQCIReportListItemFormat,
+    ...
+}
+
+PerQCIReportListItemFormat ::= SEQUENCE{
+    qci                    INTEGER (0..255),
+    pDCPBytesDL            INTEGER (0..10000000000,...) OPTIONAL,
+    pDCPBytesUL            INTEGER (0..10000000000,...) OPTIONAL,
+    ...
+}
+
+
+END
+
+-- ASN1STOP
+
index df56433..bbef135 100644 (file)
@@ -142,6 +142,11 @@ COPY --from=ubuntu /usr/lib/x86_64-linux-gnu/libicudata.so.60 /usr/lib/libicudat
 
 COPY --from=ubuntu /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/libstdc++.so.6
 
+COPY --from=ubuntu /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.5.0 /usr/lib/libcurl-gnutls.so.4.5.0
+COPY --from=ubuntu /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 /usr/lib/libcurl-gnutls.so.4
+COPY --from=ubuntu /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so /usr/lib/libcurl-gnutls.so
+
+
 WORKDIR /opt/e2/
 ENV LD_LIBRARY_PATH=/usr/local/lib
 ENV RMR_SEED_RT=dockerRouter.txt
index 62f42a3..94827f9 100644 (file)
@@ -239,16 +239,17 @@ int buildConfiguration(sctp_params_t &sctpParams) {
     }
     jsonTrace = sctpParams.trace;
 
+    sctpParams.epollTimeOut = -1;
     tmpStr = conf.getStringValue("prometheusMode");
     transform(tmpStr.begin(), tmpStr.end(), tmpStr.begin(), ::tolower);
     if (tmpStr.length() != 0) {
-        if (tmpStr.compare("push")) {
+        if (tmpStr.compare("push") == 0) {
             sctpParams.prometheusPushAddress = tmpStr;
             auto timeout = conf.getIntValue("prometheusPushTimeOut");
             if (timeout >= 5 && timeout <= 300) {
-                sctpParams.epollTimeOut = timeout;
+                sctpParams.epollTimeOut = timeout * 1000;
             } else {
-                sctpParams.epollTimeOut = 10;
+                sctpParams.epollTimeOut = 10 * 1000;
             }
         }
     }
@@ -624,7 +625,7 @@ void listener(sctp_params_t *params) {
         future<int> gateWay;
 
         if (mdclog_level_get() >= MDCLOG_DEBUG) {
-            mdclog_write(MDCLOG_DEBUG, "Start EPOLL Wait");
+            mdclog_write(MDCLOG_DEBUG, "Start EPOLL Wait. Timeout = %d", params->epollTimeOut);
         }
         auto numOfEvents = epoll_wait(params->epoll_fd, events, MAXEVENTS, params->epollTimeOut);
         if (numOfEvents == 0) {
@@ -870,11 +871,14 @@ void handleConfigChange(sctp_params_t *sctpParams) {
                 }
                 jsonTrace = sctpParams->trace;
 
-                auto timeout = conf.getIntValue("prometheusPushTimeOut");
-                if (timeout >= 5 && timeout <= 300) {
-                    sctpParams->epollTimeOut = timeout;
-                } else {
-                    mdclog_write(MDCLOG_ERR, "prometheusPushTimeOut set wrong value %d, values are [5..300]", timeout);
+                if (sctpParams->prometheusMode.compare("push") == 0) {
+                    auto timeout = conf.getIntValue("prometheusPushTimeOut");
+                    if (timeout >= 5 && timeout <= 300) {
+                        sctpParams->epollTimeOut = timeout * 1000;
+                    } else {
+                        mdclog_write(MDCLOG_ERR, "prometheusPushTimeOut set wrong value %d, values are [5..300]",
+                                     timeout);
+                    }
                 }
 
                 endlessLoop = false;
@@ -2104,8 +2108,16 @@ int receiveXappMessages(Sctp_Map_t *sctpMap,
     rmr_get_meid(rmrMessageBuffer.rcvMessage, (unsigned char *)message.message.enodbName);
     message.peerInfo = (ConnectedCU_t *) sctpMap->find(message.message.enodbName);
     if (message.peerInfo == nullptr) {
-         mdclog_write(MDCLOG_ERR, "Failed to send message no CU entry %s", message.message.enodbName);
-        return -1;
+        auto type = rmrMessageBuffer.rcvMessage->mtype;
+        switch (type) {
+            case RIC_SCTP_CLEAR_ALL:
+            case E2_TERM_KEEP_ALIVE_REQ:
+            case RIC_HEALTH_CHECK_REQ:
+                break;
+            default:
+                mdclog_write(MDCLOG_ERR, "Failed to send message no CU entry %s", message.message.enodbName);
+                return -1;
+        }
     }
 
     switch (rmrMessageBuffer.rcvMessage->mtype) {