aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Sperling <ssperling@sysmocom.de>2018-03-13 21:11:49 +0100
committerStefan Sperling <ssperling@sysmocom.de>2018-03-13 21:13:27 +0100
commit3a74128ccce5f044eca6a208476383082af90b0f (patch)
tree69202352d3de758bfb30dbc45b8627a23d2ea4ae
parent621c729d8d557c82d92b12fe1d1df872697bbd6e (diff)
restore sending of optional MM info messages
Since commit 2483f1b050496eda7f8707327204251c57212906 the function gsm48_tx_mm_info() was not called anymore. No MM info messages were transmitted to phones even if MM info messages were enabled via VTY. With this commit, we call gsm48_tx_mm_info() after successfully processing an IMSI ATTACH location update. Change-Id: Ice5963d84253eb8c803cd2dfa8b25a4db5382827 Related: OS#2850
-rw-r--r--include/osmocom/msc/vlr.h1
-rw-r--r--src/libmsc/gsm_04_08.c10
-rw-r--r--src/libvlr/vlr_lu_fsm.c4
3 files changed, 15 insertions, 0 deletions
diff --git a/include/osmocom/msc/vlr.h b/include/osmocom/msc/vlr.h
index 37702a9ee..96bfa2f29 100644
--- a/include/osmocom/msc/vlr.h
+++ b/include/osmocom/msc/vlr.h
@@ -217,6 +217,7 @@ struct vlr_ops {
/* UTRAN: send Common Id (when auth+ciph are complete) */
int (*tx_common_id)(void *msc_conn_ref);
+ int (*tx_mm_info)(void *msc_conn_ref);
/* notify MSC/SGSN that the subscriber data in VLR has been updated */
void (*subscr_update)(struct vlr_subscr *vsub);
diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c
index 08f1517e1..f604b8732 100644
--- a/src/libmsc/gsm_04_08.c
+++ b/src/libmsc/gsm_04_08.c
@@ -3575,6 +3575,15 @@ static int msc_vlr_tx_common_id(void *msc_conn_ref)
return msc_tx_common_id(conn);
}
+/* VLR asks us to transmit MM info. */
+static int msc_vlr_tx_mm_info(void *msc_conn_ref)
+{
+ struct gsm_subscriber_connection *conn = msc_conn_ref;
+ if (!conn->network->send_mm_info)
+ return 0;
+ return gsm48_tx_mm_info(conn);
+}
+
/* VLR asks us to transmit a CM Service Reject */
static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum vlr_proc_arq_result result)
{
@@ -3741,6 +3750,7 @@ static const struct vlr_ops msc_vlr_ops = {
.tx_cm_serv_rej = msc_vlr_tx_cm_serv_rej,
.set_ciph_mode = msc_vlr_set_ciph_mode,
.tx_common_id = msc_vlr_tx_common_id,
+ .tx_mm_info = msc_vlr_tx_mm_info,
.subscr_update = msc_vlr_subscr_update,
.subscr_assoc = msc_vlr_subscr_assoc,
};
diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c
index 9a4a23912..908e0e3ca 100644
--- a/src/libvlr/vlr_lu_fsm.c
+++ b/src/libvlr/vlr_lu_fsm.c
@@ -1257,6 +1257,10 @@ static void lu_fsm_wait_lu_compl(struct osmo_fsm_inst *fi, uint32_t event,
/* TODO: Set_Notification_Type 23.078 */
/* TODO: Notify_gsmSCF 23.078 */
/* TODO: Authenticated Radio Contact Established -> ARC */
+
+ if (lfp->type == VLR_LU_TYPE_IMSI_ATTACH)
+ lfp->vlr->ops.tx_mm_info(lfp->msc_conn_ref);
+
lu_fsm_success(fi);
break;
case VLR_ULA_E_LU_COMPL_FAILURE: