aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2019-01-23 21:22:27 +0700
committerVadim Yanitskiy <axilirator@gmail.com>2019-02-01 18:55:54 +0000
commit36c44b210059bd75059008913ad05976dfef7d7e (patch)
tree595a8558a3f1d839302ceaf10ebf22ae0b9a93d6
parentce9e1f664ed752dd99c83b4024ce81d685a79215 (diff)
transaction: change arguments of trans_find_by_sm_rp_mr()
The need to pass a pointer to RAN connection in order to find a transaction limits possible use cases of trans_find_by_sm_rp_mr(), e.g. when we need to find a transaction, but RAN connection is not established yet. Moreover, the pointer to RAN connection was only used to obtain pointers to gsm_network and vlr_subscr, so we can just pass them directly. Change-Id: I093f36d63e671e50e54fc6236e97a777cc6da77b
-rw-r--r--include/osmocom/msc/transaction.h3
-rw-r--r--src/libmsc/gsm_04_11_gsup.c2
-rw-r--r--src/libmsc/transaction.c8
3 files changed, 7 insertions, 6 deletions
diff --git a/include/osmocom/msc/transaction.h b/include/osmocom/msc/transaction.h
index 6e67f3909..36e9bc1ed 100644
--- a/include/osmocom/msc/transaction.h
+++ b/include/osmocom/msc/transaction.h
@@ -100,7 +100,8 @@ struct gsm_trans *trans_find_by_id(const struct ran_conn *conn,
uint8_t proto, uint8_t trans_id);
struct gsm_trans *trans_find_by_callref(const struct gsm_network *net,
uint32_t callref);
-struct gsm_trans *trans_find_by_sm_rp_mr(const struct ran_conn *conn,
+struct gsm_trans *trans_find_by_sm_rp_mr(const struct gsm_network *net,
+ const struct vlr_subscr *vsub,
uint8_t sm_rp_mr);
struct gsm_trans *trans_alloc(struct gsm_network *net,
diff --git a/src/libmsc/gsm_04_11_gsup.c b/src/libmsc/gsm_04_11_gsup.c
index f2de95f70..8b1225eeb 100644
--- a/src/libmsc/gsm_04_11_gsup.c
+++ b/src/libmsc/gsm_04_11_gsup.c
@@ -176,7 +176,7 @@ int gsm411_gsup_mo_handler(struct vlr_subscr *vsub,
}
/* Attempt to find DTAP-transaction */
- trans = trans_find_by_sm_rp_mr(conn, *(gsup_msg->sm_rp_mr));
+ trans = trans_find_by_sm_rp_mr(net, vsub, *(gsup_msg->sm_rp_mr));
if (!trans) {
LOGP(DLSMS, LOGL_NOTICE, "No transaction found for %s, "
"ignoring %s-%s message...\n", vlr_subscr_name(vsub),
diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c
index 70a39e852..7c91c9225 100644
--- a/src/libmsc/transaction.c
+++ b/src/libmsc/transaction.c
@@ -72,15 +72,15 @@ struct gsm_trans *trans_find_by_callref(const struct gsm_network *net,
}
/*! Find a transaction by SM-RP-MR (RP Message Reference)
- * \param[in] conn Connection in which we want to find transaction
+ * \param[in] net Network in which we should search
+ * \param[in] vsub Subscriber for which we should search
* \param[in] sm_rp_mr RP Message Reference (see GSM TS 04.11, section 8.2.3)
* \returns Matching transaction, NULL otherwise
*/
-struct gsm_trans *trans_find_by_sm_rp_mr(const struct ran_conn *conn,
+struct gsm_trans *trans_find_by_sm_rp_mr(const struct gsm_network *net,
+ const struct vlr_subscr *vsub,
uint8_t sm_rp_mr)
{
- struct gsm_network *net = conn->network;
- struct vlr_subscr *vsub = conn->vsub;
struct gsm_trans *trans;
llist_for_each_entry(trans, &net->trans_list, entry) {