FIx for SubResp: Unpack failed: err: e2err_RICsubscriptionResponseRICaction_NotAdmitt... 42/2242/1
authorAnssi Mannila <anssi.mannila@nokia.com>
Thu, 16 Jan 2020 07:14:47 +0000 (09:14 +0200)
committerAnssi Mannila <anssi.mannila@nokia.com>
Thu, 16 Jan 2020 07:15:22 +0000 (09:15 +0200)
Change-Id: Iffd58af5d5b4aaaf1114660009a146469539a72b
Signed-off-by: Anssi Mannila <anssi.mannila@nokia.com>
e2ap/libe2ap_wrapper/E2AP_if.c
e2ap/libe2ap_wrapper/E2AP_if.h
e2ap/pkg/e2ap/e2ap_tests/msg_e2ap_subscription.go

index 9f115a0..69f1dcb 100644 (file)
@@ -94,18 +94,18 @@ bool E2encode(E2AP_PDU_t* pE2AP_PDU, size_t* dataBufferSize, byte* dataBuffer, c
     asn_enc_rval_t rval;
     rval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, pE2AP_PDU, dataBuffer, *dataBufferSize);
     if (rval.encoded == -1) {
-        sprintf(pLogBuffer,"\nSerialization of %s failed.\n", asn_DEF_E2AP_PDU.name);
+        sprintf(pLogBuffer,"Serialization of %s failed.", asn_DEF_E2AP_PDU.name);
         ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
         return false;
     }
     else if (rval.encoded > *dataBufferSize) {
-        sprintf(pLogBuffer,"\nBuffer of size %zu is too small for %s, need %zu\n",*dataBufferSize, asn_DEF_E2AP_PDU.name, rval.encoded);
+        sprintf(pLogBuffer,"Buffer of size %zu is too small for %s, need %zu",*dataBufferSize, asn_DEF_E2AP_PDU.name, rval.encoded);
         ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
         return false;
     }
     else {
         if (debug)
-            sprintf(pLogBuffer,"\nSuccessfully encoded %s. Buffer size %zu, encoded size %zu\n\n",asn_DEF_E2AP_PDU.name, *dataBufferSize, rval.encoded);
+            sprintf(pLogBuffer,"Successfully encoded %s. Buffer size %zu, encoded size %zu",asn_DEF_E2AP_PDU.name, *dataBufferSize, rval.encoded);
 
         ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
         *dataBufferSize = rval.encoded;
@@ -370,17 +370,17 @@ uint64_t packRICEventTriggerDefinition(char* pLogBuffer, RICEventTriggerDefiniti
                                     pRICEventTriggerDefinition->octetString.data, bufferSize);
         if(rval.encoded == -1)
         {
-            sprintf(pLogBuffer,"\nSerialization of %s failed.\n", asn_DEF_E2SM_gNB_X2_eventTriggerDefinition.name);
+            sprintf(pLogBuffer,"Serialization of %s failed.", asn_DEF_E2SM_gNB_X2_eventTriggerDefinition.name);
             return e2err_RICEventTriggerDefinitionPackFail_1;
         }
         else if(rval.encoded > bufferSize)
         {
-           sprintf(pLogBuffer,"\nBuffer of size %zu is too small for %s, need %zu\n",bufferSize, asn_DEF_E2SM_gNB_X2_eventTriggerDefinition.name, rval.encoded);
+           sprintf(pLogBuffer,"Buffer of size %zu is too small for %s, need %zu",bufferSize, asn_DEF_E2SM_gNB_X2_eventTriggerDefinition.name, rval.encoded);
             return e2err_RICEventTriggerDefinitionPackFail_2;
         }
         else
         if (debug)
-               sprintf(pLogBuffer,"\nSuccessfully encoded %s. Buffer size %zu, encoded size %zu\n\n",asn_DEF_E2SM_gNB_X2_eventTriggerDefinition.name, bufferSize, rval.encoded);
+               sprintf(pLogBuffer,"Successfully encoded %s. Buffer size %zu, encoded size %zu",asn_DEF_E2SM_gNB_X2_eventTriggerDefinition.name, bufferSize, rval.encoded);
 
         ASN_STRUCT_FREE(asn_DEF_E2SM_gNB_X2_eventTriggerDefinition, pE2SM_gNB_X2_eventTriggerDefinition);
 
@@ -898,17 +898,17 @@ uint64_t packRICIndicationHeader(char* pLogBuffer, RICIndicationHeader_t* pRICIn
                                     pRICIndicationHeader->octetString.data, bufferSize);
         if(rval.encoded == -1)
         {
-            sprintf(pLogBuffer,"\nSerialization of %s failed.\n", asn_DEF_E2SM_gNB_X2_indicationHeader.name);
+            sprintf(pLogBuffer,"Serialization of %s failed.", asn_DEF_E2SM_gNB_X2_indicationHeader.name);
             return e2err_RICindicationHeaderPackFail_1;
         }
         else if(rval.encoded > bufferSize)
         {
-            sprintf(pLogBuffer,"\nBuffer of size %zu is too small for %s, need %zu\n",bufferSize, asn_DEF_E2SM_gNB_X2_indicationHeader.name, rval.encoded);
+            sprintf(pLogBuffer,"Buffer of size %zu is too small for %s, need %zu",bufferSize, asn_DEF_E2SM_gNB_X2_indicationHeader.name, rval.encoded);
             return e2err_RICindicationHeaderPackFail_2;
         }
         else
             if (debug)
-                sprintf(pLogBuffer,"\nSuccessfully encoded %s. Buffer size %zu, encoded size %zu\n\n",asn_DEF_E2SM_gNB_X2_indicationHeader.name, bufferSize, rval.encoded);
+                sprintf(pLogBuffer,"Successfully encoded %s. Buffer size %zu, encoded size %zu",asn_DEF_E2SM_gNB_X2_indicationHeader.name, bufferSize, rval.encoded);
 
         ASN_STRUCT_FREE(asn_DEF_E2SM_gNB_X2_indicationHeader, pE2SM_gNB_X2_indicationHeader);
 
@@ -945,17 +945,17 @@ uint64_t packRICIndicationMessage(char* pLogBuffer, RICIndicationMessage_t* pRIC
                                     pRICIndicationMessage->octetString.data, bufferSize);
         if(rval.encoded == -1)
         {
-            sprintf(pLogBuffer,"\nSerialization of %s failed.\n", asn_DEF_E2SM_gNB_X2_indicationMessage.name);
+            sprintf(pLogBuffer,"Serialization of %s failed.", asn_DEF_E2SM_gNB_X2_indicationMessage.name);
             return e2err_RICindicationMessagePackFail_1;
         }
         else if(rval.encoded > bufferSize)
         {
-            sprintf(pLogBuffer,"\nBuffer of size %zu is too small for %s, need %zu\n",bufferSize, asn_DEF_E2SM_gNB_X2_indicationMessage.name, rval.encoded);
+            sprintf(pLogBuffer,"Buffer of size %zu is too small for %s, need %zu",bufferSize, asn_DEF_E2SM_gNB_X2_indicationMessage.name, rval.encoded);
             return e2err_RICindicationMessagePackFail_2;
         }
         else
             if (debug)
-                sprintf(pLogBuffer,"\nSuccessfully encoded %s. Buffer size %zu, encoded size %zu\n\n",asn_DEF_E2SM_gNB_X2_indicationMessage.name, bufferSize, rval.encoded);
+                sprintf(pLogBuffer,"Successfully encoded %s. Buffer size %zu, encoded size %zu",asn_DEF_E2SM_gNB_X2_indicationMessage.name, bufferSize, rval.encoded);
 
         ASN_STRUCT_FREE(asn_DEF_E2SM_gNB_X2_indicationMessage, pE2SM_gNB_X2_indicationMessage);
 
@@ -1148,7 +1148,7 @@ e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t dataBufferSize, const byte* dataBuff
     case RC_OK:
         // Debug print
         if (debug) {
-            sprintf(pLogBuffer,"\nSuccessfully decoded E2AP-PDU\n\n");
+            sprintf(pLogBuffer,"Successfully decoded E2AP-PDU");
             asn_fprint(stdout, &asn_DEF_E2AP_PDU, pE2AP_PDU);
         }
 
@@ -1160,7 +1160,7 @@ e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t dataBufferSize, const byte* dataBuff
                     return (e2ap_pdu_ptr_t*)pE2AP_PDU;
                 }
                 else {
-                    sprintf(pLogBuffer,"\nError. Not supported initiatingMessage MessageId = %u\n\n",pE2AP_PDU->choice.initiatingMessage.value.present);
+                    sprintf(pLogBuffer,"Error. Not supported initiatingMessage MessageId = %u",pE2AP_PDU->choice.initiatingMessage.value.present);
                     return 0;
                 }
             }
@@ -1171,7 +1171,7 @@ e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t dataBufferSize, const byte* dataBuff
                     return (e2ap_pdu_ptr_t*)pE2AP_PDU;
                 }
                 else {
-                    sprintf(pLogBuffer,"\nError. Not supported initiatingMessage MessageId = %u\n\n",pE2AP_PDU->choice.initiatingMessage.value.present);
+                    sprintf(pLogBuffer,"Error. Not supported initiatingMessage MessageId = %u",pE2AP_PDU->choice.initiatingMessage.value.present);
                     return 0;
                 }
             }
@@ -1182,12 +1182,12 @@ e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t dataBufferSize, const byte* dataBuff
                     return (e2ap_pdu_ptr_t*)pE2AP_PDU;
                 }
                 else {
-                    sprintf(pLogBuffer,"\nError. Not supported initiatingMessage MessageId = %u\n\n",pE2AP_PDU->choice.initiatingMessage.value.present);
+                    sprintf(pLogBuffer,"Error. Not supported initiatingMessage MessageId = %u",pE2AP_PDU->choice.initiatingMessage.value.present);
                     return 0;
                 }
             }
             else {
-                sprintf(pLogBuffer,"\nError. Procedure not supported. ProcedureCode = %li\n\n",pE2AP_PDU->choice.initiatingMessage.procedureCode);
+                sprintf(pLogBuffer,"Error. Procedure not supported. ProcedureCode = %li",pE2AP_PDU->choice.initiatingMessage.procedureCode);
                 return 0;
             }
         }
@@ -1199,7 +1199,7 @@ e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t dataBufferSize, const byte* dataBuff
                     return (e2ap_pdu_ptr_t*)pE2AP_PDU;
                 }
                 else {
-                    sprintf(pLogBuffer,"\nError. Not supported successfulOutcome MessageId = %u\n\n",pE2AP_PDU->choice.successfulOutcome.value.present);
+                    sprintf(pLogBuffer,"Error. Not supported successfulOutcome MessageId = %u",pE2AP_PDU->choice.successfulOutcome.value.present);
                     return 0;
                 }
             }
@@ -1210,12 +1210,12 @@ e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t dataBufferSize, const byte* dataBuff
                     return (e2ap_pdu_ptr_t*)pE2AP_PDU;
                 }
                 else {
-                    sprintf(pLogBuffer,"\nError. Not supported successfulOutcome MessageId = %u\n\n",pE2AP_PDU->choice.successfulOutcome.value.present);
+                    sprintf(pLogBuffer,"Error. Not supported successfulOutcome MessageId = %u",pE2AP_PDU->choice.successfulOutcome.value.present);
                     return 0;
                 }
             }
             else {
-                sprintf(pLogBuffer,"\nError. Procedure not supported. ProcedureCode = %li\n\n",pE2AP_PDU->choice.successfulOutcome.procedureCode);
+                sprintf(pLogBuffer,"Error. Procedure not supported. ProcedureCode = %li",pE2AP_PDU->choice.successfulOutcome.procedureCode);
                 return 0;
             }
         }
@@ -1227,7 +1227,7 @@ e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t dataBufferSize, const byte* dataBuff
                     return (e2ap_pdu_ptr_t*)pE2AP_PDU;
                 }
                 else {
-                    sprintf(pLogBuffer,"\nError. Not supported unsuccessfulOutcome MessageId = %u\n\n",pE2AP_PDU->choice.unsuccessfulOutcome.value.present);
+                    sprintf(pLogBuffer,"Error. Not supported unsuccessfulOutcome MessageId = %u",pE2AP_PDU->choice.unsuccessfulOutcome.value.present);
                     return 0;
                 }
             }
@@ -1238,20 +1238,20 @@ e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t dataBufferSize, const byte* dataBuff
                     return (e2ap_pdu_ptr_t*)pE2AP_PDU;
                 }
                 else {
-                    sprintf(pLogBuffer,"\nError. Not supported unsuccessfulOutcome MessageId = %u\n\n",pE2AP_PDU->choice.unsuccessfulOutcome.value.present);
+                    sprintf(pLogBuffer,"Error. Not supported unsuccessfulOutcome MessageId = %u",pE2AP_PDU->choice.unsuccessfulOutcome.value.present);
                     return 0;
                 }
             }
         }
         else
-            sprintf(pLogBuffer,"\nDecode failed. Invalid message type %u\n",pE2AP_PDU->present);
+            sprintf(pLogBuffer,"Decode failed. Invalid message type %u",pE2AP_PDU->present);
         ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
         return 0;
     case RC_WMORE:
-        sprintf(pLogBuffer,"\nDecode failed. More data needed. Buffer size %zu, %s, consumed %zu\n",dataBufferSize, asn_DEF_E2AP_PDU.name, rval.consumed);
+        sprintf(pLogBuffer,"Decode failed. More data needed. Buffer size %zu, %s, consumed %zu",dataBufferSize, asn_DEF_E2AP_PDU.name, rval.consumed);
         return 0;
     case RC_FAIL:
-        sprintf(pLogBuffer,"\nDecode failed. Buffer size %zu, %s, consumed %zu\n",dataBufferSize, asn_DEF_E2AP_PDU.name, rval.consumed);
+        sprintf(pLogBuffer,"Decode failed. Buffer size %zu, %s, consumed %zu",dataBufferSize, asn_DEF_E2AP_PDU.name, rval.consumed);
         return 0;
     default:
         return 0;
@@ -1361,7 +1361,7 @@ uint64_t getRICEventTriggerDefinitionData(RICEventTriggerDefinition_t* pRICEvent
     case RC_OK:
         // Debug print
         if (debug) {
-            printf("\nSuccessfully decoded E2SM_gNB_X2_eventTriggerDefinition\n\n");
+            printf("Successfully decoded E2SM_gNB_X2_eventTriggerDefinition");
             asn_fprint(stdout, &asn_DEF_E2SM_gNB_X2_eventTriggerDefinition, pE2SM_gNB_X2_eventTriggerDefinition);
         }
 
@@ -1471,13 +1471,13 @@ uint64_t getRICEventTriggerDefinitionData(RICEventTriggerDefinition_t* pRICEvent
         return e2err_OK;
     case RC_WMORE:
         if (debug)
-            printf("\nDecode failed. More data needed. Buffer size %zu, %s, consumed %zu\n",pRICEventTriggerDefinition->octetString.contentLength,
+            printf("Decode failed. More data needed. Buffer size %zu, %s, consumed %zu",pRICEventTriggerDefinition->octetString.contentLength,
                    asn_DEF_E2SM_gNB_X2_eventTriggerDefinition.name, rval.consumed);
 
         return e2err_RICEventTriggerDefinitionDecodeWMOREFail;
     case RC_FAIL:
         if (debug)
-            printf("\nDecode failed. Buffer size %zu, %s, consumed %zu\n",pRICEventTriggerDefinition->octetString.contentLength,
+            printf("Decode failed. Buffer size %zu, %s, consumed %zu",pRICEventTriggerDefinition->octetString.contentLength,
                    asn_DEF_E2SM_gNB_X2_eventTriggerDefinition.name, rval.consumed);
 
         return e2err_RICEventTriggerDefinitionDecodeFAIL;
@@ -1580,10 +1580,6 @@ uint64_t getRICSubscriptionResponseData(e2ap_pdu_ptr_t* pE2AP_PDU_pointer, RICSu
             pRICSubscriptionResponse->ricActionNotAdmittedList.contentLength = index;
         }
     }
-    else {
-        ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
-        return e2err_RICsubscriptionResponseRICaction_NotAdmitted_ListMissing;
-    }
 
     ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
     return e2err_OK;
@@ -1794,7 +1790,7 @@ uint64_t getRICIndicationHeaderData(RICIndicationHeader_t* pRICIndicationHeader)
     case RC_OK:
         // Debug print
         if (debug) {
-            printf("\nSuccessfully decoded E2SM_gNB_X2_indicationHeader\n\n");
+            printf("Successfully decoded E2SM_gNB_X2_indicationHeader");
             asn_fprint(stdout, &asn_DEF_E2SM_gNB_X2_indicationHeader, pE2SM_gNB_X2_indicationHeader);
         }
 
@@ -1892,12 +1888,12 @@ uint64_t getRICIndicationHeaderData(RICIndicationHeader_t* pRICIndicationHeader)
         return e2err_OK;
     case RC_WMORE:
         if (debug)
-            printf("\nDecode failed. More data needed. Buffer size %zu, %s, consumed %zu\n",pRICIndicationHeader->octetString.contentLength,
+            printf("Decode failed. More data needed. Buffer size %zu, %s, consumed %zu",pRICIndicationHeader->octetString.contentLength,
                    asn_DEF_E2SM_gNB_X2_indicationHeader.name, rval.consumed);
         return e2err_RICIndicationHeaderDecodeWMOREFail;
     case RC_FAIL:
         if (debug)
-            printf("\nDecode failed. Buffer size %zu, %s, consumed %zu\n",pRICIndicationHeader->octetString.contentLength,
+            printf("Decode failed. Buffer size %zu, %s, consumed %zu",pRICIndicationHeader->octetString.contentLength,
                    asn_DEF_E2SM_gNB_X2_indicationHeader.name, rval.consumed);
 
         return e2err_RICIndicationHeaderDecodeFAIL;
@@ -1917,7 +1913,7 @@ uint64_t getRICIndicationMessageData(RICIndicationMessage_t* pRICIndicationMessa
     case RC_OK:
         // Debug print
         if (debug) {
-            printf("\nSuccessfully decoded E2SM_gNB_X2_indicationMessage\n\n");
+            printf("Successfully decoded E2SM_gNB_X2_indicationMessage");
             asn_fprint(stdout, &asn_DEF_E2SM_gNB_X2_indicationMessage, pE2SM_gNB_X2_indicationMessage);
         }
 
@@ -1935,13 +1931,13 @@ uint64_t getRICIndicationMessageData(RICIndicationMessage_t* pRICIndicationMessa
         }
     case RC_WMORE:
         if (debug)
-            printf("\nDecode failed. More data needed. Buffer size %zu, %s, consumed %zu\n",pRICIndicationMessage->octetString.contentLength,
+            printf("Decode failed. More data needed. Buffer size %zu, %s, consumed %zu",pRICIndicationMessage->octetString.contentLength,
                    asn_DEF_E2SM_gNB_X2_indicationMessage.name, rval.consumed);
 
         return e2err_RICIndicationMessageDecodeWMOREFail;
     case RC_FAIL:
         if (debug)
-            printf("\nDecode failed. Buffer size %zu, %s, consumed %zu\n",pRICIndicationMessage->octetString.contentLength,
+            printf("Decode failed. Buffer size %zu, %s, consumed %zu",pRICIndicationMessage->octetString.contentLength,
                    asn_DEF_E2SM_gNB_X2_indicationMessage.name, rval.consumed);
 
         return e2err_RICIndicationMessageDecodeFAIL;
index d70d2b6..ce131a7 100644 (file)
@@ -416,7 +416,6 @@ enum e2err {
     e2err_RICsubscriptionResponseRICrequestIDMissing,
     e2err_RICsubscriptionResponseRANfunctionIDMissing,
     e2err_RICsubscriptionResponseRICaction_Admitted_ListMissing,
-    e2err_RICsubscriptionResponseRICaction_NotAdmitted_ListMissing,
     e2err_RICsubscriptionFailureRICrequestIDMissing,
     e2err_RICsubscriptionFailureRANfunctionIDMissing,
     e2err_RICsubscriptionFailureRICaction_NotAdmitted_ListMissing,
@@ -541,7 +540,6 @@ static const char* const E2ErrorStrings[] = {
     "e2err_RICsubscriptionResponseRICrequestIDMissing",
     "e2err_RICsubscriptionResponseRANfunctionIDMissing",
     "e2err_RICsubscriptionResponseRICaction_Admitted_ListMissing",
-    "e2err_RICsubscriptionResponseRICaction_NotAdmitted_ListMissing",
     "e2err_RICsubscriptionFailureRICrequestIDMissing",
     "e2err_RICsubscriptionFailureRANfunctionIDMissing",
     "e2err_RICsubscriptionFailureRICaction_NotAdmitted_ListMissing",
index 10b2d12..02153af 100644 (file)
@@ -293,6 +293,7 @@ func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionResponseBuffers(t *testing.T)
        testfunc("20c9402a000004ea7e000500000106f4ea6300020001ea6c000700ea6d00020000ea6e000908ea6f000400000040")
        testfunc("20c9402a000004ea7e000500000106f5ea6300020001ea6c000700ea6d00020000ea6e000908ea6f000400000040")
        testfunc("20c9402a000004ea7e000500000106f6ea6300020001ea6c000700ea6d00020000ea6e000908ea6f000400000040")
+       testfunc("20c9401d000003ea7e0005004eec0004ea6300020001ea6c000700ea6d40020000")
 
 }