laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-iuh/+/36309?usp=email )
Change subject: Add ranap_decode_rab_releaseditemies_fromlist() ......................................................................
Add ranap_decode_rab_releaseditemies_fromlist()
This function is analogous to existing ranap_decode_*_itemies_fromlist() which we already had.
This is needed in an upcoming osmo-hnbgw patchset where we need to parse the ReleasedItems in order to track RAB release progess in order to gather KPIs on RAB release.
Change-Id: I328819c650fc6cefe735093a846277b4f03e6b29 --- M include/osmocom/ranap/ranap_common.h M src/ranap_common.c 2 files changed, 44 insertions(+), 0 deletions(-)
Approvals: pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified laforge: Looks good to me, approved
diff --git a/include/osmocom/ranap/ranap_common.h b/include/osmocom/ranap/ranap_common.h index 5727c0d..0da7b10 100644 --- a/include/osmocom/ranap/ranap_common.h +++ b/include/osmocom/ranap/ranap_common.h @@ -661,3 +661,8 @@ int ranap_decode_rab_setupormodifyitemfirst( RANAP_RAB_SetupOrModifyItemFirst_t *raB_SetupOrModifyItemFirst, ANY_t *any_p); + +/* There is no generated decoder available, this is a custom one */ +int ranap_decode_rab_releaseditemies_fromlist( + RANAP_RAB_ReleasedItemIEs_t *raB_ReleasedItemIEs, + ANY_t *any_p); diff --git a/src/ranap_common.c b/src/ranap_common.c index f264ac0..2c99ecd 100644 --- a/src/ranap_common.c +++ b/src/ranap_common.c @@ -628,6 +628,29 @@ return decoded; }
+int ranap_decode_rab_releaseditemies_fromlist(RANAP_RAB_ReleasedItemIEs_t *raB_ReleasedItemIEs, ANY_t *any_p) +{ + RANAP_RAB_ReleasedItem_t *ranaP_RABReleasedItem_p = NULL; + int decoded; + + assert(any_p != NULL); + assert(raB_ReleasedItemIEs != NULL); + + memset(raB_ReleasedItemIEs, 0, sizeof(RANAP_RAB_ReleasedItemIEs_t)); + RANAP_DEBUG("Decoding message RANAP_RAB_ReleasedItemIEs (%s:%d)\n", __FILE__, __LINE__); + decoded = ANY_to_type_aper(any_p, &asn_DEF_RANAP_RAB_ReleasedItem, (void **)&ranaP_RABReleasedItem_p); + if (decoded < 0) { + LOGP(DRANAP, LOGL_ERROR, "Decoding of IE raB_ReleasedItem failed\n"); + return -1; + } + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_RANAP_RAB_ReleasedItem, ranaP_RABReleasedItem_p); + memcpy(&raB_ReleasedItemIEs->raB_ReleasedItem, ranaP_RABReleasedItem_p, sizeof(RANAP_RAB_ReleasedItem_t)); + FREEMEM(ranaP_RABReleasedItem_p); + + return decoded; +} + int ranap_decode_rab_setupormodifyitemfirst( RANAP_RAB_SetupOrModifyItemFirst_t *raB_SetupOrModifyItemFirst, ANY_t *any_p)