diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2018-04-01 20:55:54 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-04-11 21:39:44 +0000 |
commit | 4068ab278b66af7010c3acc73a7bb87bf651fc46 (patch) | |
tree | 096c6e858639e74703f272762dcead6df7c8df4b /include | |
parent | e3d3dc6ea218a07161eeb80ae864a96bef2d8e61 (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.h | 3 | ||||
-rw-r--r-- | include/osmocom/msc/osmo_msc.h | 6 |
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); |