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/.
dexter gerrit-no-reply at lists.osmocom.orgdexter has uploaded this change for review. ( 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, 69 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/28/11728/1
diff --git a/include/osmocom/gsm/gsm0808.h b/include/osmocom/gsm/gsm0808.h
index cdbb273..4d12566 100644
--- a/include/osmocom/gsm/gsm0808.h
+++ b/include/osmocom/gsm/gsm0808.h
@@ -168,6 +168,24 @@
};
struct msgb *gsm0808_create_handover_failure(const struct gsm0808_handover_failure *params);
+struct gsm0808_handover_performed {
+ uint16_t cause;
+ struct osmo_cell_global_id cell;
+
+ 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;
+};
+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 e5c3e30..7246289 100644
--- a/src/gsm/gsm0808.c
+++ b/src/gsm/gsm0808.c
@@ -871,6 +871,56 @@
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;
+ struct {
+ uint8_t ident;
+ struct gsm48_loc_area_id lai;
+ uint16_t ci;
+ } __attribute__ ((packed)) lai_ci;
+
+ 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, params->cause & 0x80 ? 2 : 1, (const uint8_t *)¶ms->cause);
+
+ /* Cell Identifier, 3.2.2.17 */
+ lai_ci.ident = CELL_IDENT_WHOLE_GLOBAL;
+ gsm48_generate_lai2(&lai_ci.lai, ¶ms->cell.lai);
+ lai_ci.ci = osmo_htons(params->cell.cell_identity);
+ msgb_tlv_put(msg, GSM0808_IE_CELL_IDENTIFIER, sizeof(lai_ci), (uint8_t *) & lai_ci);
+
+ /* 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);
+
+ /* Sspeech 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, ¶ms->speech_codec_chosen);
+
+ /* 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 4813e13..34a7ff3 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -178,6 +178,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: newchange
Gerrit-Change-Id: I825106858bd89afc9837811b8fed2e8accc82441
Gerrit-Change-Number: 11728
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181112/4ca6545a/attachment.htm>