diff options
Diffstat (limited to 'src/libmsc/sgs_iface.c')
-rw-r--r-- | src/libmsc/sgs_iface.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/libmsc/sgs_iface.c b/src/libmsc/sgs_iface.c index a4527f460..5ccded775 100644 --- a/src/libmsc/sgs_iface.c +++ b/src/libmsc/sgs_iface.c @@ -1256,6 +1256,28 @@ void sgs_iface_tx_release(struct vlr_subscr *vsub) sgs_tx(mme->conn, msg_sgs); } +/*! Send SGsAP-SERVICE-ABORT-REQUEST message to MME + * \param[in] vsub subscriber context */ +void sgs_iface_tx_serv_abrt(struct vlr_subscr *vsub) +{ + struct msgb *msg_sgs; + struct sgs_mme_ctx *mme; + + OSMO_ASSERT(vsub); + + /* The service abort procedure is only defined for MT calls, + * see also 3GPP TS 29.118, chapter 5.13.2 */ + if (vsub->sgs.paging_serv_ind != SGSAP_SERV_IND_CS_CALL) + return; + + mme = sgs_mme_ctx_by_vsub(vsub, SGSAP_MSGT_DL_UD); + if (!mme) + return; + + msg_sgs = gsm29118_create_service_abort_req(vsub->imsi); + sgs_tx(mme->conn, msg_sgs); +} + /*! initalize SGs new interface * \param[in] ctx talloc context * \param[in] network associated gsm network |