aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc/transaction.c
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2019-01-10 17:25:33 +0100
committerVadim Yanitskiy <axilirator@gmail.com>2019-02-15 02:19:24 +0700
commit30fb97aa431d8c8cfcf00e193c809ad1c5567d10 (patch)
tree5cd5bc2cdbbec6d8d8056fa6f7a527386bab53ac /src/libmsc/transaction.c
parent114bad8c48bb37d8cdf1b4956a0fd046a3b0783e (diff)
transaction: drop meaningless ti_flag of trans_assign_trans_id()
According to GSM 04.07, the TI flag takes one bit and can be either of the following: '0'B - transaction is allocated by sender of a message, '1'B - transaction is allocated by receiver of a message. Since we store transaction ID in gsm_trans structure, we also store TI flag (as a part of transaction ID), which in this context means: '0'B - transaction is allocated by us (OsmoMSC), '1'B - transaction is allocated by some MS. In 100% cases, trans_assign_trans_id() is used to assign transaction IDs to transactions allocated by us (i.e. OsmoMSC) for MT connections. And there is no need to use it for MO transactions, because they basically already do contain a valid transaction ID assigned by the MS. Change-Id: Ie11999900b1789652ee078d34636dcda1e137eb0
Diffstat (limited to 'src/libmsc/transaction.c')
-rw-r--r--src/libmsc/transaction.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c
index 7c91c9225..237191d09 100644
--- a/src/libmsc/transaction.c
+++ b/src/libmsc/transaction.c
@@ -179,22 +179,19 @@ void trans_free(struct gsm_trans *trans)
}
/*! allocate an unused transaction ID for the given subscriber
- * in the given protocol using the ti_flag specified
+ * in the given protocol using TI flag = 0 (allocated by us).
+ * See GSM 04.07, section 11.2.3.1.3 "Transaction identifier".
* \param[in] net GSM network
* \param[in] subscr Subscriber for which to find ID
* \param[in] protocol Protocol for whihc to find ID
- * \param[in] ti_flag FIXME
*/
int trans_assign_trans_id(const struct gsm_network *net, const struct vlr_subscr *vsub,
- uint8_t protocol, uint8_t ti_flag)
+ uint8_t protocol)
{
struct gsm_trans *trans;
unsigned int used_tid_bitmask = 0;
int i, j, h;
- if (ti_flag)
- ti_flag = 0x8;
-
/* generate bitmask of already-used TIDs for this (subscr,proto) */
llist_for_each_entry(trans, &net->trans_list, entry) {
if (trans->vsub != vsub ||
@@ -206,10 +203,10 @@ int trans_assign_trans_id(const struct gsm_network *net, const struct vlr_subscr
/* find a new one, trying to go in a 'circular' pattern */
for (h = 6; h > 0; h--)
- if (used_tid_bitmask & (1 << (h | ti_flag)))
+ if (used_tid_bitmask & (1 << h))
break;
for (i = 0; i < 7; i++) {
- j = ((h + i) % 7) | ti_flag;
+ j = (h + i) % 7;
if ((used_tid_bitmask & (1 << j)) == 0)
return j;
}