gsm0808: add gsm0808_create_sapi_reject_cause()

This is basically a successor of gsm0808_create_sapi_reject(), but
instead of hard-coding GSM0808_CAUSE_BSS_NOT_EQUIPPED, it allows
the caller to specify a cause value to be used.  The old function
is now deprecated and should not be used.

Change-Id: Iefe5484d0fa02d5722b628b1dc237d51d3fb1a9b
Related: OS#4728
diff --git a/src/gsm/gsm0808.c b/src/gsm/gsm0808.c
index a1d567d..85f5cfc 100644
--- a/src/gsm/gsm0808.c
+++ b/src/gsm/gsm0808.c
@@ -444,8 +444,9 @@
 
 /*! Create BSSMAP SAPI N Reject message
  *  \param[in] link_id Link Identifier
+ *  \param[in] cause BSSAP Cause value (see 3GPP TS 48.008, section 3.2.2.5)
  *  \returns callee-allocated msgb with BSSMAP SAPI N Reject message */
-struct msgb *gsm0808_create_sapi_reject(uint8_t link_id)
+struct msgb *gsm0808_create_sapi_reject_cause(uint8_t link_id, uint16_t cause)
 {
 	struct msgb *msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
 					       "bssmap: sapi 'n' reject");
@@ -454,13 +455,23 @@
 
 	msgb_v_put(msg, BSS_MAP_MSG_SAPI_N_REJECT);
 	msgb_tv_put(msg, GSM0808_IE_DLCI, link_id);
-	gsm0808_enc_cause(msg, GSM0808_CAUSE_BSS_NOT_EQUIPPED);
+	gsm0808_enc_cause(msg, cause);
 
 	msg->l3h = msgb_tv_push(msg, BSSAP_MSG_BSS_MANAGEMENT, msgb_length(msg));
 
 	return msg;
 }
 
+/*! Create BSSMAP SAPI N Reject message (with hard-coded cause "BSS not equipped").
+ *  DEPRECATED: use gsm0808_create_sapi_reject_cause() instead.
+ *  \param[in] link_id Link Identifier
+ *  \param[in] cause BSSAP Cause value (see 3GPP TS 48.008, section 3.2.2.5)
+ *  \returns callee-allocated msgb with BSSMAP SAPI N Reject message */
+struct msgb *gsm0808_create_sapi_reject(uint8_t link_id)
+{
+	return gsm0808_create_sapi_reject_cause(link_id, GSM0808_CAUSE_BSS_NOT_EQUIPPED);
+}
+
 /*! Create BSSMAP Assignment Request message, 3GPP TS 48.008 §3.2.1.1.
  *  This is identical to gsm0808_create_ass(), but adds KC and LCLS IEs.
  *  \param[in] ct Channel Type
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index 713ffe3..4ece107 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -190,6 +190,7 @@
 gsm0808_create_lcls_notification;
 gsm0808_create_reset;
 gsm0808_create_reset_ack;
+gsm0808_create_sapi_reject_cause;
 gsm0808_create_sapi_reject;
 gsm0808_create_handover_required;
 gsm0808_create_handover_required_reject;