laforge submitted this change.

View Change



5 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.

Approvals: fixeria: Looks good to me, approved Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve
ASCI: Add protocol type to trans_find_by_callref() function

This is required, because different protocols may share the same
callref, but use different protocols. E.g. a voice group call can share
the same callref with a voice broadcast call, but these calls are
different transactions.

Related: OS#5364
Change-Id: Ifea3a81aae3b4ae897851f867b13fa987c8cbe11
---
M src/host/layer23/include/osmocom/bb/mobile/transaction.h
M src/host/layer23/src/mobile/gsm411_sms.c
M src/host/layer23/src/mobile/gsm480_ss.c
M src/host/layer23/src/mobile/gsm48_cc.c
M src/host/layer23/src/mobile/transaction.c
5 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/host/layer23/include/osmocom/bb/mobile/transaction.h b/src/host/layer23/include/osmocom/bb/mobile/transaction.h
index 8c06d5d..1c998cd 100644
--- a/src/host/layer23/include/osmocom/bb/mobile/transaction.h
+++ b/src/host/layer23/include/osmocom/bb/mobile/transaction.h
@@ -62,7 +62,7 @@

struct gsm_trans *trans_find_by_id(struct osmocom_ms *ms,
uint8_t proto, uint8_t trans_id);
-struct gsm_trans *trans_find_by_callref(struct osmocom_ms *ms,
+struct gsm_trans *trans_find_by_callref(struct osmocom_ms *ms, uint8_t protocol,
uint32_t callref);

struct gsm_trans *trans_alloc(struct osmocom_ms *ms,
diff --git a/src/host/layer23/src/mobile/gsm411_sms.c b/src/host/layer23/src/mobile/gsm411_sms.c
index 64d098c..a5454b7 100644
--- a/src/host/layer23/src/mobile/gsm411_sms.c
+++ b/src/host/layer23/src/mobile/gsm411_sms.c
@@ -914,7 +914,7 @@
struct gsm_trans *trans;
int rc = 0;

- trans = trans_find_by_callref(ms, mmh->ref);
+ trans = trans_find_by_callref(ms, GSM48_PDISC_SMS, mmh->ref);
if (!trans) {
LOGP(DLSMS, LOGL_INFO, " -> (new transaction sapi=%d)\n", sapi);
trans = trans_alloc(ms, GSM48_PDISC_SMS, mmh->transaction_id,
diff --git a/src/host/layer23/src/mobile/gsm480_ss.c b/src/host/layer23/src/mobile/gsm480_ss.c
index 202e1e7..bf99667 100644
--- a/src/host/layer23/src/mobile/gsm480_ss.c
+++ b/src/host/layer23/src/mobile/gsm480_ss.c
@@ -1240,7 +1240,7 @@
struct gsm_trans *trans;
int rc = 0;

- trans = trans_find_by_callref(ms, mmh->ref);
+ trans = trans_find_by_callref(ms, GSM48_PDISC_NC_SS, mmh->ref);
if (!trans) {
LOGP(DSS, LOGL_INFO, " -> (new transaction)\n");
trans = trans_alloc(ms, GSM48_PDISC_NC_SS, mmh->transaction_id,
diff --git a/src/host/layer23/src/mobile/gsm48_cc.c b/src/host/layer23/src/mobile/gsm48_cc.c
index 43c93fc..190eb91 100644
--- a/src/host/layer23/src/mobile/gsm48_cc.c
+++ b/src/host/layer23/src/mobile/gsm48_cc.c
@@ -1937,7 +1937,7 @@
data->msg_type = msg_type;

/* Find callref */
- trans = trans_find_by_callref(ms, data->callref);
+ trans = trans_find_by_callref(ms, GSM48_PDISC_CC, data->callref);

if (!trans) {
/* check for SETUP message */
@@ -2147,7 +2147,7 @@
struct gsm_trans *trans;
int rc = 0;

- trans = trans_find_by_callref(ms, mmh->ref);
+ trans = trans_find_by_callref(ms, GSM48_PDISC_CC, mmh->ref);
if (!trans) {
trans = trans_alloc(ms, GSM48_PDISC_CC, mmh->transaction_id,
mmh->ref);
diff --git a/src/host/layer23/src/mobile/transaction.c b/src/host/layer23/src/mobile/transaction.c
index 2fb910a..712a8ee 100644
--- a/src/host/layer23/src/mobile/transaction.c
+++ b/src/host/layer23/src/mobile/transaction.c
@@ -44,13 +44,13 @@
return NULL;
}

-struct gsm_trans *trans_find_by_callref(struct osmocom_ms *ms,
+struct gsm_trans *trans_find_by_callref(struct osmocom_ms *ms, uint8_t protocol,
uint32_t callref)
{
struct gsm_trans *trans;

llist_for_each_entry(trans, &ms->trans_list, entry) {
- if (trans->callref == callref)
+ if (trans->protocol == protocol && trans->callref == callref)
return trans;
}
return NULL;

To view, visit change 34493. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: Ifea3a81aae3b4ae897851f867b13fa987c8cbe11
Gerrit-Change-Number: 34493
Gerrit-PatchSet: 15
Gerrit-Owner: jolly <andreas@eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>
Gerrit-MessageType: merged