SMS over GSUP: correctly route GSUP responses to MT SMS

When OsmoMSC is used with OsmoHLR rather than a GSUP-to-MAP gateway,
MT-forwardSM.req GSUP messages delivering MT SMS will be coming from
a separate SMSC relayed via OsmoHLR, rather than from OsmoHLR itself.
When we reply to these messages, in order for these replies to reach
the MT-sending SMSC via OsmoHLR, we need to save source_name from
the request and regurgitate it into destination_name in our response
messages.  Implement this logic.

Related: OS#6135
Change-Id: I436e333035b8f6e27f86a49fe293ea48ea07a013
diff --git a/src/libmsc/gsm_04_11_gsup.c b/src/libmsc/gsm_04_11_gsup.c
index 0f18912..6225c6c 100644
--- a/src/libmsc/gsm_04_11_gsup.c
+++ b/src/libmsc/gsm_04_11_gsup.c
@@ -198,6 +198,10 @@
 	gsup_sm_msg_init(&gsup_msg, OSMO_GSUP_MSGT_MT_FORWARD_SM_RESULT,
 		trans->vsub->imsi, &sm_rp_mr);
 
+	/* Ensure routing through OsmoHLR to the MT-sending SMSC */
+	gsup_msg.destination_name = trans->sms.gsup_source_name;
+	gsup_msg.destination_name_len = trans->sms.gsup_source_name_len;
+
 	return gsup_client_mux_tx(trans->net->gcm, &gsup_msg);
 }
 
@@ -215,6 +219,10 @@
 	gsup_sm_msg_init(&gsup_msg, OSMO_GSUP_MSGT_MT_FORWARD_SM_ERROR,
 		trans->vsub->imsi, &sm_rp_mr);
 
+	/* Ensure routing through OsmoHLR to the MT-sending SMSC */
+	gsup_msg.destination_name = trans->sms.gsup_source_name;
+	gsup_msg.destination_name_len = trans->sms.gsup_source_name_len;
+
 	/* SM-RP-Cause value */
 	gsup_msg.sm_rp_cause = &cause;
 
@@ -259,7 +267,8 @@
 	rc = gsm411_send_rp_data(net, vsub,
 		gsup_msg->sm_rp_oa_len, gsup_msg->sm_rp_oa,
 		gsup_msg->sm_rp_ui_len, gsup_msg->sm_rp_ui,
-		sm_rp_mmts_ind);
+		sm_rp_mmts_ind, gsup_msg->source_name,
+		gsup_msg->source_name_len);
 	if (rc) {
 		LOGP(DLSMS, LOGL_NOTICE, "Failed to send MT SMS, "
 			"ignoring MT-forwardSM-Req message...\n");