Change in libosmocore[master]: gsm0808: add message generator for BSSMAP HANDOVER PERFORMED

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Mon Dec 3 13:54:32 UTC 2018


Harald Welte has submitted this change and it was merged. ( https://gerrit.osmocom.org/11728 )

Change subject: gsm0808: add message generator for BSSMAP HANDOVER PERFORMED
......................................................................

gsm0808: add message generator for BSSMAP HANDOVER PERFORMED

We currently have no generator function that can generate BSSMAP
HANDOVER PERFORMED messages. Lets add function for this.

Change-Id: I825106858bd89afc9837811b8fed2e8accc82441
Related: OS#3645
---
M include/osmocom/gsm/gsm0808.h
M src/gsm/gsm0808.c
M src/gsm/libosmogsm.map
3 files changed, 71 insertions(+), 0 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Neels Hofmeyr: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/include/osmocom/gsm/gsm0808.h b/include/osmocom/gsm/gsm0808.h
index 298b3e4..e3fb6ad 100644
--- a/include/osmocom/gsm/gsm0808.h
+++ b/include/osmocom/gsm/gsm0808.h
@@ -172,6 +172,30 @@
 };
 struct msgb *gsm0808_create_handover_failure(const struct gsm0808_handover_failure *params);
 
+struct gsm0808_handover_performed {
+	uint16_t cause;
+	struct gsm0808_cell_id cell_id;
+
+	bool chosen_channel_present;
+	uint8_t chosen_channel;
+
+	bool chosen_encr_alg_present;
+	uint8_t chosen_encr_alg;
+
+	bool speech_version_chosen_present;
+	uint8_t speech_version_chosen;
+
+	bool speech_codec_chosen_present;
+	struct gsm0808_speech_codec speech_codec_chosen;
+
+	bool lcls_bss_status_present;
+	enum gsm0808_lcls_status lcls_bss_status;
+
+	/* more items are defined in the spec and may be added later */
+	bool more_items; /*< always set this to false */
+};
+struct msgb *gsm0808_create_handover_performed(const struct gsm0808_handover_performed *params);
+
 struct msgb *gsm0808_create_dtap(struct msgb *msg, uint8_t link_id);
 void gsm0808_prepend_dtap_header(struct msgb *msg, uint8_t link_id);
 
diff --git a/src/gsm/gsm0808.c b/src/gsm/gsm0808.c
index 2566ad5..c0d5f39 100644
--- a/src/gsm/gsm0808.c
+++ b/src/gsm/gsm0808.c
@@ -892,6 +892,52 @@
 	return msg;
 }
 
+/*! Create BSSMAP HANDOVER PERFORMED message, 3GPP TS 48.008 3.2.1.25.
+ * \param[in] params  All information to be encoded.
+ * \returns callee-allocated msgb with BSSMAP HANDOVER PERFORMED message */
+struct msgb *gsm0808_create_handover_performed(const struct gsm0808_handover_performed *params)
+{
+	struct msgb *msg;
+
+	msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM, "BSSMAP-HANDOVER-PERFORMED");
+	if (!msg)
+		return NULL;
+
+	/* Message Type, 3.2.2.1 */
+	msgb_v_put(msg, BSS_MAP_MSG_HANDOVER_PERFORMED);
+
+	/* Cause, 3.2.2.5 */
+	msgb_tlv_put(msg, GSM0808_IE_CAUSE, gsm0808_cause_ext(params->cause) ? 2 : 1, (const uint8_t *)&params->cause);
+
+	/* Cell Identifier, 3.2.2.17 */
+	gsm0808_enc_cell_id(msg, &params->cell_id);
+
+	/* Chosen Channel 3.2.2.33 */
+	if (params->chosen_channel_present)
+		msgb_tv_put(msg, GSM0808_IE_CHOSEN_CHANNEL, params->chosen_channel);
+
+	/* Chosen Encryption Algorithm 3.2.2.44 */
+	if (params->chosen_encr_alg_present)
+		msgb_tv_put(msg, GSM0808_IE_CHOSEN_ENCR_ALG, params->chosen_encr_alg);
+
+	/* Speech Version (chosen) 3.2.2.51 */
+	if (params->speech_version_chosen_present)
+		msgb_tv_put(msg, GSM0808_IE_SPEECH_VERSION, params->speech_version_chosen);
+
+	/* AoIP: Speech Codec (chosen) 3.2.2.104 */
+	if (params->speech_codec_chosen_present)
+		gsm0808_enc_speech_codec(msg, &params->speech_codec_chosen);
+
+	/* LCLS-BSS-Status 3.2.2.119 */
+	if (params->lcls_bss_status_present)
+		msgb_tv_put(msg, GSM0808_IE_LCLS_BSS_STATUS, params->lcls_bss_status);
+
+	/* prepend header with final length */
+	msg->l3h = msgb_tv_push(msg, BSSAP_MSG_BSS_MANAGEMENT, msgb_length(msg));
+
+	return msg;
+}
+
 /*! Prepend a DTAP header to given Message Buffer
  *  \param[in] msgb Message Buffer
  *  \param[in] link_id Link Identifier */
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index 3fe9dfc..04a9826 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -181,6 +181,7 @@
 gsm0808_create_handover_detect;
 gsm0808_create_handover_complete;
 gsm0808_create_handover_failure;
+gsm0808_create_handover_performed;
 gsm0808_prepend_dtap_header;
 gsm0808_enc_aoip_trasp_addr;
 gsm0808_dec_aoip_trasp_addr;

-- 
To view, visit https://gerrit.osmocom.org/11728
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I825106858bd89afc9837811b8fed2e8accc82441
Gerrit-Change-Number: 11728
Gerrit-PatchSet: 7
Gerrit-Owner: dexter <pmaier at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder (1000002)
Gerrit-Reviewer: Max <msuraev at sysmocom.de>
Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: dexter <pmaier at sysmocom.de>
Gerrit-CC: Pau Espin Pedrol <pespin at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181203/a16a52d3/attachment.htm>


More information about the gerrit-log mailing list