aboutsummaryrefslogtreecommitdiffstats
path: root/src/ranap_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ranap_common.c')
-rw-r--r--src/ranap_common.c113
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;
+}