From: Anssi Mannila Date: Tue, 26 May 2020 05:29:27 +0000 (+0300) Subject: Add fix for ANR specific ASN.1 C-codes X-Git-Tag: 0.4.3~1^2 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=ric-plt%2Fsubmgr.git;a=commitdiff_plain;h=bab69dd3de208ea2dc2fd3cb4380448297b1c613 Add fix for ANR specific ASN.1 C-codes Change-Id: I74a5917c19f314fd915e1a1b26da81c86bee4911 Signed-off-by: Anssi Mannila --- diff --git a/container-tag.yaml b/container-tag.yaml index 069434f..1ff3c81 100644 --- a/container-tag.yaml +++ b/container-tag.yaml @@ -2,4 +2,4 @@ # By default this file is in the docker build directory, # but the location can configured in the JJB template. --- -tag: "0.4.2-1" +tag: "0.4.2-2" diff --git a/e2ap/libe2ap_wrapper/E2AP_if.c b/e2ap/libe2ap_wrapper/E2AP_if.c index 4b6dfd1..9a5dc0a 100644 --- a/e2ap/libe2ap_wrapper/E2AP_if.c +++ b/e2ap/libe2ap_wrapper/E2AP_if.c @@ -2030,58 +2030,60 @@ uint64_t getRICActionDefinitionDataNRTFormat(mem_track_hdr_t* pDynMemHead, RICAc pRICActionDefinitionChoice->actionDefinitionX2Format1Present = false; pRICActionDefinitionChoice->actionDefinitionX2Format2Present = false; pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterCount = 0; - uint64_t index = 0; - while (index < pE2_E2SM_gNB_NRT_ActionDefinition->choice.actionDefinition_Format1.ranParameter_List->list.count) { - E2_RANparameter_Item_t* pE2_RANparameter_Item = pE2_E2SM_gNB_NRT_ActionDefinition->choice.actionDefinition_Format1.ranParameter_List->list.array[index]; - if (pE2_RANparameter_Item) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterID = pE2_RANparameter_Item->ranParameter_ID; - - if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueInt) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueIntPresent = true; - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueInt = - pE2_RANparameter_Item->ranParameter_Value.choice.valueInt; - } - else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueEnum) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueEnumPresent = true; - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueEnum = - pE2_RANparameter_Item->ranParameter_Value.choice.valueEnum; - } - else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueBool) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBoolPresent = true; - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBool = - pE2_RANparameter_Item->ranParameter_Value.choice.valueBool; - } - else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueBitS) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitSPresent = true; - addBitString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitS, - pE2_RANparameter_Item->ranParameter_Value.choice.valueBitS.size, - pE2_RANparameter_Item->ranParameter_Value.choice.valueBitS.buf, - pE2_RANparameter_Item->ranParameter_Value.choice.valueBitS.bits_unused); - } - else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueOctS) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctSPresent = true; - addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctS, - pE2_RANparameter_Item->ranParameter_Value.choice.valueOctS.size, - pE2_RANparameter_Item->ranParameter_Value.choice.valueOctS.buf); - } - else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valuePrtS) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtSPresent = true; - addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtS, - pE2_RANparameter_Item->ranParameter_Value.choice.valuePrtS.size, - pE2_RANparameter_Item->ranParameter_Value.choice.valuePrtS.buf); + if (pE2_E2SM_gNB_NRT_ActionDefinition->choice.actionDefinition_Format1.ranParameter_List) { + uint64_t index = 0; + while (index < pE2_E2SM_gNB_NRT_ActionDefinition->choice.actionDefinition_Format1.ranParameter_List->list.count) { + E2_RANparameter_Item_t* pE2_RANparameter_Item = pE2_E2SM_gNB_NRT_ActionDefinition->choice.actionDefinition_Format1.ranParameter_List->list.array[index]; + if (pE2_RANparameter_Item) { + pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterID = pE2_RANparameter_Item->ranParameter_ID; + + if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueInt) { + pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueIntPresent = true; + pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueInt = + pE2_RANparameter_Item->ranParameter_Value.choice.valueInt; + } + else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueEnum) { + pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueEnumPresent = true; + pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueEnum = + pE2_RANparameter_Item->ranParameter_Value.choice.valueEnum; + } + else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueBool) { + pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBoolPresent = true; + pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBool = + pE2_RANparameter_Item->ranParameter_Value.choice.valueBool; + } + else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueBitS) { + pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitSPresent = true; + addBitString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitS, + pE2_RANparameter_Item->ranParameter_Value.choice.valueBitS.size, + pE2_RANparameter_Item->ranParameter_Value.choice.valueBitS.buf, + pE2_RANparameter_Item->ranParameter_Value.choice.valueBitS.bits_unused); + } + else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueOctS) { + pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctSPresent = true; + addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctS, + pE2_RANparameter_Item->ranParameter_Value.choice.valueOctS.size, + pE2_RANparameter_Item->ranParameter_Value.choice.valueOctS.buf); + } + else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valuePrtS) { + pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtSPresent = true; + addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtS, + pE2_RANparameter_Item->ranParameter_Value.choice.valuePrtS.size, + pE2_RANparameter_Item->ranParameter_Value.choice.valuePrtS.buf); + } + else { + ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition); + return e2err_RICSubscriptionRequestNRTRanParameterItemRanParameterValueEmptyFail; + } } else { ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition); - return e2err_RICSubscriptionRequestNRTRanParameterItemRanParameterValueEmptyFail; + return e2err_RICSubscriptionRequestNRTAllocActionDefinitionFail; } + index++; } - else { - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition); - return e2err_RICSubscriptionRequestNRTAllocActionDefinitionFail; - } - index++; + pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterCount = index; } - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterCount = index; } ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition); return e2err_OK;