aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/ranap/ranap_msg_factory.h3
-rw-r--r--src/ranap_msg_factory.c28
2 files changed, 31 insertions, 0 deletions
diff --git a/include/osmocom/ranap/ranap_msg_factory.h b/include/osmocom/ranap/ranap_msg_factory.h
index d0fe4a2..14bcd7e 100644
--- a/include/osmocom/ranap/ranap_msg_factory.h
+++ b/include/osmocom/ranap/ranap_msg_factory.h
@@ -24,6 +24,9 @@ struct msgb *ranap_new_msg_common_id(const char *imsi);
/*! \brief generate RANAP IU RELEASE COMMAND message */
struct msgb *ranap_new_msg_iu_rel_cmd(const RANAP_Cause_t *cause_in);
+/*! \brief generate RAPAP IU RELEASE COMPLETE message */
+struct msgb *ranap_new_msg_iu_rel_compl(void);
+
/*! \brief generate RANAP PAGING COMMAND message */
struct msgb *ranap_new_msg_paging_cmd(const char *imsi, const uint32_t *tmsi, int is_ps, uint32_t cause);
diff --git a/src/ranap_msg_factory.c b/src/ranap_msg_factory.c
index 75b4ff9..ab51c77 100644
--- a/src/ranap_msg_factory.c
+++ b/src/ranap_msg_factory.c
@@ -364,6 +364,34 @@ struct msgb *ranap_new_msg_iu_rel_cmd(const RANAP_Cause_t *cause_in)
return msg;
}
+/*! \brief generate RAPAP IU RELEASE COMPLETE message */
+struct msgb *ranap_new_msg_iu_rel_compl(void)
+{
+ RANAP_Iu_ReleaseCompleteIEs_t ies;
+ RANAP_Iu_ReleaseComplete_t out;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ memset(&out, 0, sizeof(out));
+
+ /* ies -> out */
+ rc = ranap_encode_iu_releasecompleteies(&out, &ies);
+ if (rc < 0)
+ return NULL;
+
+ /* out -> msg */
+ msg = ranap_generate_successful_outcome(RANAP_ProcedureCode_id_Iu_Release,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_Iu_ReleaseComplete,
+ &out);
+
+ /* release dynamic allocations attached to out */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_Iu_ReleaseComplete, &out);
+
+ return msg;
+}
+
/*! \brief generate RANAP PAGING COMMAND message */
struct msgb *ranap_new_msg_paging_cmd(const char *imsi, const uint32_t *tmsi, int is_ps, uint32_t cause)
{