diff options
Diffstat (limited to 'src/ranap_common.c')
-rw-r--r-- | src/ranap_common.c | 113 |
1 files changed, 104 insertions, 9 deletions
diff --git a/src/ranap_common.c b/src/ranap_common.c index 46203e0..68c3d2d 100644 --- a/src/ranap_common.c +++ b/src/ranap_common.c @@ -331,7 +331,7 @@ struct msgb *ranap_generate_initiating_message(e_RANAP_ProcedureCode procedureCo pdu.choice.initiatingMessage.criticality = criticality; rc = ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr); if (rc < 0) { - LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n"); + LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper (%s)\n", td->name); return NULL; } @@ -358,7 +358,7 @@ struct msgb *ranap_generate_successful_outcome( pdu.choice.successfulOutcome.criticality = criticality; rc = ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr); if (rc < 0) { - LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n"); + LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper (%s)\n", td->name); return NULL; } @@ -385,7 +385,7 @@ struct msgb *ranap_generate_unsuccessful_outcome( pdu.choice.unsuccessfulOutcome.criticality = criticality; rc = ANY_fromType_aper(&pdu.choice.unsuccessfulOutcome.value, td, sptr); if (rc < 0) { - LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n"); + LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper (%s)\n", td->name); return NULL; } @@ -412,7 +412,7 @@ struct msgb *ranap_generate_outcome( pdu.choice.outcome.criticality = criticality; rc = ANY_fromType_aper(&pdu.choice.outcome.value, td, sptr); if (rc < 0) { - LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n"); + LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper (%s)\n", td->name); return NULL; } @@ -440,7 +440,7 @@ RANAP_IE_t *ranap_new_ie(RANAP_ProtocolIE_ID_t id, rc = ANY_fromType_aper(&buff->value, type, sptr); if (rc < 0) { - LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n"); + LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper (%s)\n", type->name); FREEMEM(buff); return NULL; } @@ -474,14 +474,14 @@ RANAP_ProtocolIE_FieldPair_t *ranap_new_ie_pair(RANAP_ProtocolIE_ID_t id, rc = ANY_fromType_aper(&buff->firstValue, type1, sptr1); if (rc < 0) { - LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n"); + LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper (%s)\n", type1->name); FREEMEM(buff); return NULL; } rc = ANY_fromType_aper(&buff->secondValue, type2, sptr2); if (rc < 0) { - LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n"); + LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper (%s)\n", type2->name); ASN_STRUCT_FREE(asn_DEF_RANAP_ProtocolIE_FieldPair, buff); return NULL; } @@ -562,7 +562,8 @@ int ranap_decode_rab_setupormodifieditemies_fromlist( ANY_t *any_p) { RANAP_RAB_SetupOrModifiedItem_t *ranaP_RABSetupOrModifiedItem_p = NULL; - int decoded = 0; + int decoded; + assert(any_p != NULL); assert(raB_SetupOrModifiedItemIEs != NULL); @@ -570,7 +571,7 @@ int ranap_decode_rab_setupormodifieditemies_fromlist( RANAP_DEBUG("Decoding message RANAP_RAB_SetupOrModifiedItemIEs (%s:%d)\n", __FILE__, __LINE__); decoded = ANY_to_type_aper(any_p, &asn_DEF_RANAP_RAB_SetupOrModifiedItem, (void**)&ranaP_RABSetupOrModifiedItem_p); if (decoded < 0) { - RANAP_DEBUG("Decoding of IE raB_SetupOrModifiedItem failed\n"); + LOGP(DRANAP, LOGL_ERROR, "Decoding of IE raB_SetupOrModifiedItem failed\n"); return -1; } if (asn1_xer_print) @@ -581,3 +582,97 @@ int ranap_decode_rab_setupormodifieditemies_fromlist( return decoded; } +int ranap_decode_rab_faileditemies_fromlist(RANAP_RAB_FailedItemIEs_t *raB_FailedItemIEs, ANY_t *any_p) +{ + RANAP_RAB_FailedItem_t *ranaP_RABFailedItem_p = NULL; + int decoded; + + assert(any_p != NULL); + assert(raB_FailedItemIEs != NULL); + + memset(raB_FailedItemIEs, 0, sizeof(RANAP_RAB_FailedItemIEs_t)); + RANAP_DEBUG("Decoding message RANAP_RAB_FailedItemIEs (%s:%d)\n", __FILE__, __LINE__); + decoded = ANY_to_type_aper(any_p, &asn_DEF_RANAP_RAB_FailedItem, (void **)&ranaP_RABFailedItem_p); + if (decoded < 0) { + LOGP(DRANAP, LOGL_ERROR, "Decoding of IE raB_FailedItem failed\n"); + return -1; + } + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_RANAP_RAB_FailedItem, ranaP_RABFailedItem_p); + memcpy(&raB_FailedItemIEs->raB_FailedItem, ranaP_RABFailedItem_p, sizeof(RANAP_RAB_FailedItem_t)); + FREEMEM(ranaP_RABFailedItem_p); + + return decoded; +} + +int ranap_decode_rab_releaseitemies_fromlist(RANAP_RAB_ReleaseItemIEs_t *raB_ReleaseItemIEs, ANY_t *any_p) +{ + RANAP_RAB_ReleaseItem_t *ranaP_RABReleaseItem_p = NULL; + int decoded; + + assert(any_p != NULL); + assert(raB_ReleaseItemIEs != NULL); + + memset(raB_ReleaseItemIEs, 0, sizeof(RANAP_RAB_ReleaseItemIEs_t)); + RANAP_DEBUG("Decoding message RANAP_RAB_ReleaseItemIEs (%s:%d)\n", __FILE__, __LINE__); + decoded = ANY_to_type_aper(any_p, &asn_DEF_RANAP_RAB_ReleaseItem, (void **)&ranaP_RABReleaseItem_p); + if (decoded < 0) { + LOGP(DRANAP, LOGL_ERROR, "Decoding of IE raB_ReleaseItem failed\n"); + return -1; + } + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_RANAP_RAB_ReleaseItem, ranaP_RABReleaseItem_p); + memcpy(&raB_ReleaseItemIEs->raB_ReleaseItem, ranaP_RABReleaseItem_p, sizeof(RANAP_RAB_ReleaseItem_t)); + FREEMEM(ranaP_RABReleaseItem_p); + + 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) +{ + RANAP_RAB_SetupOrModifyItemFirst_t *ranaP_RABSetupOrModifyItemFirst_p = NULL; + int decoded; + + assert(any_p != NULL); + assert(raB_SetupOrModifyItemFirst != NULL); + + memset(raB_SetupOrModifyItemFirst, 0, sizeof(RANAP_RAB_SetupOrModifyItemFirst_t)); + RANAP_DEBUG("Decoding message RANAP_RAB_SetupOrModifyItemFirst_t (%s:%d)\n", __FILE__, __LINE__); + decoded = ANY_to_type_aper(any_p, &asn_DEF_RANAP_RAB_SetupOrModifyItemFirst, + (void **)&ranaP_RABSetupOrModifyItemFirst_p); + if (decoded < 0) { + LOGP(DRANAP, LOGL_ERROR, "Decoding of RANAP_RAB_SetupOrModifyItemFirst_t failed\n"); + return -1; + } + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_RANAP_RAB_SetupOrModifyItemFirst, ranaP_RABSetupOrModifyItemFirst_p); + memcpy(raB_SetupOrModifyItemFirst, ranaP_RABSetupOrModifyItemFirst_p, sizeof(RANAP_RAB_SetupOrModifyItemFirst_t)); + FREEMEM(ranaP_RABSetupOrModifyItemFirst_p); + + return decoded; +} |