aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-04-01 20:55:54 +0200
committerHarald Welte <laforge@gnumonks.org>2018-04-11 21:39:44 +0000
commit4068ab278b66af7010c3acc73a7bb87bf651fc46 (patch)
tree096c6e858639e74703f272762dcead6df7c8df4b /include
parente3d3dc6ea218a07161eeb80ae864a96bef2d8e61 (diff)
properly receive BSSMAP Clear Complete and Iu Release Complete
When sending a BSSMAP Clear or Iu Release, do not immediately discard the conn, but wait until a BSSMAP Clear Complete / Iu Release Complete has been received. Hence we will no longer show in the log that an incoming Release/Clear Complete belongs to an unknown subscriber, but will still be around to properly log the release. Related: OS#3122 Change-Id: Ie4c6aaba3866d6e5b98004e8870a215e8cf8ffc1
Diffstat (limited to 'include')
-rw-r--r--include/osmocom/msc/gsm_data.h3
-rw-r--r--include/osmocom/msc/osmo_msc.h6
2 files changed, 9 insertions, 0 deletions
diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h
index 4cfe08d08..c5e7aaf12 100644
--- a/include/osmocom/msc/gsm_data.h
+++ b/include/osmocom/msc/gsm_data.h
@@ -148,6 +148,7 @@ struct gsm_subscriber_connection {
struct {
struct ranap_ue_conn_ctx *ue_ctx;
uint8_t rab_id;
+ bool waiting_for_release_complete;
} iu;
struct {
@@ -164,6 +165,8 @@ struct gsm_subscriber_connection {
* to reference the SCCP connection that is
* associated with this subscriber connection */
uint32_t conn_id;
+
+ bool waiting_for_clear_complete;
} a;
};
diff --git a/include/osmocom/msc/osmo_msc.h b/include/osmocom/msc/osmo_msc.h
index f7d89a259..632b2316e 100644
--- a/include/osmocom/msc/osmo_msc.h
+++ b/include/osmocom/msc/osmo_msc.h
@@ -77,8 +77,12 @@ bool msc_subscr_conn_is_establishing_auth_ciph(const struct gsm_subscriber_conne
void msc_subscr_conn_communicating(struct gsm_subscriber_connection *conn);
void msc_subscr_conn_close(struct gsm_subscriber_connection *conn,
uint32_t cause);
+void msc_subscr_conn_mo_close(struct gsm_subscriber_connection *conn, uint32_t cause);
bool msc_subscr_conn_in_release(struct gsm_subscriber_connection *conn);
+void msc_subscr_conn_rx_bssmap_clear_complete(struct gsm_subscriber_connection *conn);
+void msc_subscr_conn_rx_iu_release_complete(struct gsm_subscriber_connection *conn);
+
enum msc_subscr_conn_use {
MSC_CONN_USE_UNTRACKED = -1,
MSC_CONN_USE_COMPL_L3,
@@ -107,6 +111,8 @@ _msc_subscr_conn_get(struct gsm_subscriber_connection *conn,
void _msc_subscr_conn_put(struct gsm_subscriber_connection *conn,
enum msc_subscr_conn_use balance_token,
const char *file, int line);
+bool msc_subscr_conn_used_by(struct gsm_subscriber_connection *conn,
+ enum msc_subscr_conn_use token);
void msc_stop_paging(struct vlr_subscr *vsub);