aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gprs_ms.cpp27
-rw-r--r--src/gprs_ms.h12
-rw-r--r--src/tbf.cpp42
-rw-r--r--src/tbf.h8
-rw-r--r--src/tbf_dl.cpp1
-rw-r--r--tests/tbf/TbfTest.cpp54
-rw-r--r--tests/tbf/TbfTest.err75
-rw-r--r--tests/tbf/TbfTest.ok2
8 files changed, 207 insertions, 14 deletions
diff --git a/src/gprs_ms.cpp b/src/gprs_ms.cpp
index 4c2f7cc0..c2320a29 100644
--- a/src/gprs_ms.cpp
+++ b/src/gprs_ms.cpp
@@ -65,6 +65,8 @@ GprsMs::GprsMs(uint32_t tlli) :
m_list(this)
{
LOGP(DRLCMAC, LOGL_INFO, "Creating MS object, TLLI = 0x%08x\n", tlli);
+
+ m_imsi[0] = 0;
}
GprsMs::~GprsMs()
@@ -236,3 +238,28 @@ bool GprsMs::confirm_tlli(uint32_t tlli)
return true;
}
+
+void GprsMs::set_imsi(const char *imsi)
+{
+ if (!imsi) {
+ LOGP(DRLCMAC, LOGL_ERROR, "Expected IMSI!\n");
+ return;
+ }
+
+ if (imsi[0] && strlen(imsi) < 3) {
+ LOGP(DRLCMAC, LOGL_ERROR, "No valid IMSI '%s'!\n",
+ imsi);
+ return;
+ }
+
+ if (strcmp(imsi, m_imsi) == 0)
+ return;
+
+ LOGP(DRLCMAC, LOGL_INFO,
+ "Modifying MS object, TLLI = 0x%08x, IMSI '%s' -> '%s'\n",
+ tlli(), m_imsi, imsi);
+
+ strncpy(m_imsi, imsi, sizeof(m_imsi));
+ m_imsi[sizeof(m_imsi) - 1] = '\0';
+}
+
diff --git a/src/gprs_ms.h b/src/gprs_ms.h
index e84ff9e7..7f8af414 100644
--- a/src/gprs_ms.h
+++ b/src/gprs_ms.h
@@ -56,6 +56,9 @@ public:
bool confirm_tlli(uint32_t tlli);
bool check_tlli(uint32_t tlli);
+ const char *imsi() const;
+ void set_imsi(const char *imsi);
+
void attach_tbf(gprs_rlcmac_tbf *tbf);
void attach_ul_tbf(gprs_rlcmac_ul_tbf *tbf);
void attach_dl_tbf(gprs_rlcmac_dl_tbf *tbf);
@@ -82,6 +85,10 @@ private:
uint32_t m_tlli;
uint32_t m_new_ul_tlli;
uint32_t m_new_dl_tlli;
+
+ /* store IMSI for look-up and PCH retransmission */
+ char m_imsi[16];
+
bool m_is_idle;
int m_ref;
LListHead<GprsMs> m_list;
@@ -99,3 +106,8 @@ inline bool GprsMs::check_tlli(uint32_t tlli)
return tlli != 0 &&
(tlli == m_tlli || tlli == m_new_ul_tlli || tlli == m_new_dl_tlli);
}
+
+inline const char *GprsMs::imsi() const
+{
+ return m_imsi;
+}
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 51b2aa5c..0771969f 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -51,10 +51,42 @@ uint32_t gprs_rlcmac_tbf::tlli() const
return m_ms ? m_ms->tlli() : 0;
}
-void gprs_rlcmac_tbf::assign_imsi(const char *imsi)
+const char *gprs_rlcmac_tbf::imsi() const
{
- strncpy(m_imsi, imsi, sizeof(m_imsi));
- m_imsi[sizeof(m_imsi) - 1] = '\0';
+ static const char nullc = 0;
+ return m_ms ? m_ms->imsi() : &nullc;
+}
+
+void gprs_rlcmac_tbf::assign_imsi(const char *imsi_)
+{
+ GprsMs *old_ms;
+
+ if (!imsi_ || !m_ms) {
+ LOGP(DRLCMAC, LOGL_ERROR,
+ "%s failed to assign IMSI: missing IMSI or MS object\n",
+ name());
+ return;
+ }
+
+ if (strcmp(imsi_, imsi()) == 0)
+ return;
+
+ /* really change the IMSI */
+
+ old_ms = bts->ms_store().get_ms(0, 0, imsi_);
+ if (old_ms) {
+ /* We cannot find m_ms by IMSI since we know that it has a
+ * different IMSI */
+ OSMO_ASSERT(old_ms != m_ms);
+
+ LOGP(DRLCMAC, LOGL_INFO,
+ "%s the IMSI '%s' was already assigned to another "
+ "MS object: TLLI = 0x%08x, that IMSI will be removed\n",
+ name(), imsi_, old_ms->tlli());
+ old_ms->set_imsi("");
+ }
+
+ m_ms->set_imsi(imsi_);
}
void gprs_rlcmac_tbf::set_new_tbf(gprs_rlcmac_tbf *tbf)
@@ -404,9 +436,9 @@ void gprs_rlcmac_tbf::poll_timeout()
LOGP(DRLCMAC, LOGL_DEBUG, "Re-send dowlink assignment "
"for %s on PCH (IMSI=%s)\n",
tbf_name(dl_tbf),
- m_imsi);
+ imsi());
/* send immediate assignment */
- dl_tbf->bts->snd_dl_ass(dl_tbf, 0, m_imsi);
+ dl_tbf->bts->snd_dl_ass(dl_tbf, 0, imsi());
dl_tbf->m_wait_confirm = 1;
}
} else
diff --git a/src/tbf.h b/src/tbf.h
index 9dbbe51d..0820065f 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -223,9 +223,6 @@ struct gprs_rlcmac_tbf {
uint8_t m_tfi;
time_t m_created_ts;
- /* store IMSI for look-up and PCH retransmission */
- char m_imsi[16];
-
protected:
gprs_rlcmac_bts *bts_data() const;
@@ -300,11 +297,6 @@ inline uint8_t gprs_rlcmac_tbf::tfi() const
return m_tfi;
}
-inline const char *gprs_rlcmac_tbf::imsi() const
-{
- return m_imsi;
-}
-
inline gprs_rlcmac_tbf *gprs_rlcmac_tbf::new_tbf() const
{
return m_new_tbf;
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 605239a3..13811fa1 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -802,7 +802,6 @@ void gprs_rlcmac_dl_tbf::reuse_tbf(const uint8_t *data, const uint16_t len)
new_tbf->set_ms(ms());
new_tbf->ta = ta;
- new_tbf->assign_imsi(m_imsi);
/* Copy over all data to the new TBF */
new_tbf->m_llc.put_frame(data, len);
diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index bf49dbde..bc783176 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -305,6 +305,59 @@ static void test_tbf_delayed_release()
printf("=== end %s ===\n", __func__);
}
+static void test_tbf_imsi()
+{
+ BTS the_bts;
+ uint8_t ts_no = 4;
+ uint8_t ms_class = 45;
+ uint8_t trx_no;
+ GprsMs *ms1, *ms2;
+
+ gprs_rlcmac_dl_tbf *dl_tbf[2];
+
+ printf("=== start %s ===\n", __func__);
+
+ setup_bts(&the_bts, ts_no);
+
+ dl_tbf[0] = create_dl_tbf(&the_bts, ms_class, &trx_no);
+ dl_tbf[1] = create_dl_tbf(&the_bts, ms_class, &trx_no);
+
+ dl_tbf[0]->update_ms(0xf1000001, GPRS_RLCMAC_DL_TBF);
+ dl_tbf[1]->update_ms(0xf1000002, GPRS_RLCMAC_DL_TBF);
+
+ dl_tbf[0]->assign_imsi("001001000000001");
+ ms1 = the_bts.ms_store().get_ms(0, 0, "001001000000001");
+ /* OSMO_ASSERT(ms1 != NULL); */
+ ms2 = the_bts.ms_store().get_ms(0xf1000001);
+ OSMO_ASSERT(ms2 != NULL);
+ OSMO_ASSERT(strcmp(ms2->imsi(), "001001000000001") == 0);
+ /* OSMO_ASSERT(ms1 == ms2); */
+
+ /* change the IMSI on TBF 0 */
+ dl_tbf[0]->assign_imsi("001001000000002");
+ ms1 = the_bts.ms_store().get_ms(0, 0, "001001000000001");
+ OSMO_ASSERT(ms1 == NULL);
+ ms1 = the_bts.ms_store().get_ms(0, 0, "001001000000002");
+ /* OSMO_ASSERT(ms1 != NULL); */
+ OSMO_ASSERT(strcmp(ms2->imsi(), "001001000000002") == 0);
+ /* OSMO_ASSERT(ms1 == ms2); */
+
+ /* use the same IMSI on TBF 2 */
+ dl_tbf[1]->assign_imsi("001001000000002");
+ ms1 = the_bts.ms_store().get_ms(0, 0, "001001000000002");
+ /* OSMO_ASSERT(ms1 != NULL); */
+ OSMO_ASSERT(ms1 != ms2);
+ /* OSMO_ASSERT(strcmp(ms1->imsi(), "001001000000002") == 0); */
+ /* OSMO_ASSERT(strcmp(ms2->imsi(), "") == 0); */
+
+ tbf_free(dl_tbf[1]);
+ ms1 = the_bts.ms_store().get_ms(0, 0, "001001000000002");
+ OSMO_ASSERT(ms1 == NULL);
+
+ tbf_free(dl_tbf[0]);
+ printf("=== end %s ===\n", __func__);
+}
+
static void test_tbf_exhaustion()
{
BTS the_bts;
@@ -389,6 +442,7 @@ int main(int argc, char **argv)
test_tbf_final_ack(TEST_MODE_STANDARD);
test_tbf_final_ack(TEST_MODE_REVERSE_FREE);
test_tbf_delayed_release();
+ test_tbf_imsi();
test_tbf_exhaustion();
if (getenv("TALLOC_REPORT_FULL"))
diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err
index 6f95eb23..7fa1283b 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -363,6 +363,49 @@ DL packet loss of IMSI= / TLLI=0x00000000: 0%
TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE) free
TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE) stopping timer 3193.
********** TBF ends here **********
+Searching for first unallocated TFI: TRX=0 first TS=4
+ Found TFI=0.
+********** TBF starts here **********
+Allocating DL TBF: TFI=0 TRX=0 MS_CLASS=45
+Slot Allocation (Algorithm A) for class 45
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Assign downlink TS=4
+- Setting Control TS 4
+TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to FLOW
+Searching for first unallocated TFI: TRX=0 first TS=4
+ Found TFI=1.
+********** TBF starts here **********
+Allocating DL TBF: TFI=1 TRX=0 MS_CLASS=45
+Slot Allocation (Algorithm A) for class 45
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Assign downlink TS=4
+- Setting Control TS 4
+TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to FLOW
+Creating MS object, TLLI = 0x00000000
+The MS object cannot fully confirm an unexpected TLLI: 0xf1000001, partly confirmed
+Attaching TBF to MS object, TLLI = 0xf1000001, TBF = TBF(TFI=0 TLLI=0xf1000001 DIR=DL STATE=FLOW)
+Creating MS object, TLLI = 0x00000000
+The MS object cannot fully confirm an unexpected TLLI: 0xf1000002, partly confirmed
+Attaching TBF to MS object, TLLI = 0xf1000002, TBF = TBF(TFI=1 TLLI=0xf1000002 DIR=DL STATE=FLOW)
+Modifying MS object, TLLI = 0xf1000001, IMSI '' -> '001001000000001'
+Modifying MS object, TLLI = 0xf1000001, IMSI '001001000000001' -> '001001000000002'
+Modifying MS object, TLLI = 0xf1000002, IMSI '' -> '001001000000002'
+TBF(TFI=1 TLLI=0xf1000002 DIR=DL STATE=FLOW) free
+TBF(TFI=1 TLLI=0xf1000002 DIR=DL STATE=FLOW) Software error: Pending downlink assignment. This may not happen, because the assignment message never gets transmitted. Please be sure not to free in this state. PLEASE FIX!
+Detaching TBF from MS object, TLLI = 0xf1000002, TBF = TBF(TFI=1 TLLI=0xf1000002 DIR=DL STATE=FLOW)
+Destroying MS object, TLLI = 0xf1000002
+********** TBF ends here **********
+TBF(TFI=0 TLLI=0xf1000001 DIR=DL STATE=FLOW) free
+TBF(TFI=0 TLLI=0xf1000001 DIR=DL STATE=FLOW) Software error: Pending downlink assignment. This may not happen, because the assignment message never gets transmitted. Please be sure not to free in this state. PLEASE FIX!
+Detaching TBF from MS object, TLLI = 0xf1000001, TBF = TBF(TFI=0 TLLI=0xf1000001 DIR=DL STATE=FLOW)
+Destroying MS object, TLLI = 0xf1000001
+********** TBF ends here **********
TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=0.
@@ -379,6 +422,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000000, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000000, TBF = TBF(TFI=0 TLLI=0xc0000000 DIR=DL STATE=NULL)
TBF(TFI=0 TLLI=0xc0000000 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000000, IMSI '' -> '001001000000000'
Send dowlink assignment for TBF(TFI=0 TLLI=0xc0000000 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000000)
TBF(TFI=0 TLLI=0xc0000000 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=0 TLLI=0xc0000000 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -399,6 +443,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000001, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000001, TBF = TBF(TFI=1 TLLI=0xc0000001 DIR=DL STATE=NULL)
TBF(TFI=1 TLLI=0xc0000001 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000001, IMSI '' -> '001001000000001'
Send dowlink assignment for TBF(TFI=1 TLLI=0xc0000001 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000001)
TBF(TFI=1 TLLI=0xc0000001 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=1 TLLI=0xc0000001 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -419,6 +464,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000002, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000002, TBF = TBF(TFI=2 TLLI=0xc0000002 DIR=DL STATE=NULL)
TBF(TFI=2 TLLI=0xc0000002 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000002, IMSI '' -> '001001000000002'
Send dowlink assignment for TBF(TFI=2 TLLI=0xc0000002 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000002)
TBF(TFI=2 TLLI=0xc0000002 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=2 TLLI=0xc0000002 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -439,6 +485,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000003, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000003, TBF = TBF(TFI=3 TLLI=0xc0000003 DIR=DL STATE=NULL)
TBF(TFI=3 TLLI=0xc0000003 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000003, IMSI '' -> '001001000000003'
Send dowlink assignment for TBF(TFI=3 TLLI=0xc0000003 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000003)
TBF(TFI=3 TLLI=0xc0000003 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=3 TLLI=0xc0000003 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -459,6 +506,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000004, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000004, TBF = TBF(TFI=4 TLLI=0xc0000004 DIR=DL STATE=NULL)
TBF(TFI=4 TLLI=0xc0000004 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000004, IMSI '' -> '001001000000004'
Send dowlink assignment for TBF(TFI=4 TLLI=0xc0000004 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000004)
TBF(TFI=4 TLLI=0xc0000004 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=4 TLLI=0xc0000004 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -479,6 +527,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000005, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000005, TBF = TBF(TFI=5 TLLI=0xc0000005 DIR=DL STATE=NULL)
TBF(TFI=5 TLLI=0xc0000005 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000005, IMSI '' -> '001001000000005'
Send dowlink assignment for TBF(TFI=5 TLLI=0xc0000005 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000005)
TBF(TFI=5 TLLI=0xc0000005 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=5 TLLI=0xc0000005 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -499,6 +548,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000006, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000006, TBF = TBF(TFI=6 TLLI=0xc0000006 DIR=DL STATE=NULL)
TBF(TFI=6 TLLI=0xc0000006 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000006, IMSI '' -> '001001000000006'
Send dowlink assignment for TBF(TFI=6 TLLI=0xc0000006 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000006)
TBF(TFI=6 TLLI=0xc0000006 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=6 TLLI=0xc0000006 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -519,6 +569,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000007, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000007, TBF = TBF(TFI=7 TLLI=0xc0000007 DIR=DL STATE=NULL)
TBF(TFI=7 TLLI=0xc0000007 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000007, IMSI '' -> '001001000000007'
Send dowlink assignment for TBF(TFI=7 TLLI=0xc0000007 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000007)
TBF(TFI=7 TLLI=0xc0000007 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=7 TLLI=0xc0000007 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -539,6 +590,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000008, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000008, TBF = TBF(TFI=8 TLLI=0xc0000008 DIR=DL STATE=NULL)
TBF(TFI=8 TLLI=0xc0000008 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000008, IMSI '' -> '001001000000008'
Send dowlink assignment for TBF(TFI=8 TLLI=0xc0000008 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000008)
TBF(TFI=8 TLLI=0xc0000008 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=8 TLLI=0xc0000008 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -559,6 +611,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000009, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000009, TBF = TBF(TFI=9 TLLI=0xc0000009 DIR=DL STATE=NULL)
TBF(TFI=9 TLLI=0xc0000009 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000009, IMSI '' -> '001001000000009'
Send dowlink assignment for TBF(TFI=9 TLLI=0xc0000009 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000009)
TBF(TFI=9 TLLI=0xc0000009 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=9 TLLI=0xc0000009 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -579,6 +632,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc000000a, partly confirmed
Attaching TBF to MS object, TLLI = 0xc000000a, TBF = TBF(TFI=10 TLLI=0xc000000a DIR=DL STATE=NULL)
TBF(TFI=10 TLLI=0xc000000a DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc000000a, IMSI '' -> '001001000000010'
Send dowlink assignment for TBF(TFI=10 TLLI=0xc000000a DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000010)
TBF(TFI=10 TLLI=0xc000000a DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=10 TLLI=0xc000000a DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -599,6 +653,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc000000b, partly confirmed
Attaching TBF to MS object, TLLI = 0xc000000b, TBF = TBF(TFI=11 TLLI=0xc000000b DIR=DL STATE=NULL)
TBF(TFI=11 TLLI=0xc000000b DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc000000b, IMSI '' -> '001001000000011'
Send dowlink assignment for TBF(TFI=11 TLLI=0xc000000b DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000011)
TBF(TFI=11 TLLI=0xc000000b DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=11 TLLI=0xc000000b DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -619,6 +674,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc000000c, partly confirmed
Attaching TBF to MS object, TLLI = 0xc000000c, TBF = TBF(TFI=12 TLLI=0xc000000c DIR=DL STATE=NULL)
TBF(TFI=12 TLLI=0xc000000c DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc000000c, IMSI '' -> '001001000000012'
Send dowlink assignment for TBF(TFI=12 TLLI=0xc000000c DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000012)
TBF(TFI=12 TLLI=0xc000000c DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=12 TLLI=0xc000000c DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -639,6 +695,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc000000d, partly confirmed
Attaching TBF to MS object, TLLI = 0xc000000d, TBF = TBF(TFI=13 TLLI=0xc000000d DIR=DL STATE=NULL)
TBF(TFI=13 TLLI=0xc000000d DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc000000d, IMSI '' -> '001001000000013'
Send dowlink assignment for TBF(TFI=13 TLLI=0xc000000d DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000013)
TBF(TFI=13 TLLI=0xc000000d DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=13 TLLI=0xc000000d DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -659,6 +716,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc000000e, partly confirmed
Attaching TBF to MS object, TLLI = 0xc000000e, TBF = TBF(TFI=14 TLLI=0xc000000e DIR=DL STATE=NULL)
TBF(TFI=14 TLLI=0xc000000e DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc000000e, IMSI '' -> '001001000000014'
Send dowlink assignment for TBF(TFI=14 TLLI=0xc000000e DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000014)
TBF(TFI=14 TLLI=0xc000000e DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=14 TLLI=0xc000000e DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -679,6 +737,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc000000f, partly confirmed
Attaching TBF to MS object, TLLI = 0xc000000f, TBF = TBF(TFI=15 TLLI=0xc000000f DIR=DL STATE=NULL)
TBF(TFI=15 TLLI=0xc000000f DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc000000f, IMSI '' -> '001001000000015'
Send dowlink assignment for TBF(TFI=15 TLLI=0xc000000f DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000015)
TBF(TFI=15 TLLI=0xc000000f DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=15 TLLI=0xc000000f DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -699,6 +758,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000010, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000010, TBF = TBF(TFI=16 TLLI=0xc0000010 DIR=DL STATE=NULL)
TBF(TFI=16 TLLI=0xc0000010 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000010, IMSI '' -> '001001000000016'
Send dowlink assignment for TBF(TFI=16 TLLI=0xc0000010 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000016)
TBF(TFI=16 TLLI=0xc0000010 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=16 TLLI=0xc0000010 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -719,6 +779,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000011, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000011, TBF = TBF(TFI=17 TLLI=0xc0000011 DIR=DL STATE=NULL)
TBF(TFI=17 TLLI=0xc0000011 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000011, IMSI '' -> '001001000000017'
Send dowlink assignment for TBF(TFI=17 TLLI=0xc0000011 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000017)
TBF(TFI=17 TLLI=0xc0000011 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=17 TLLI=0xc0000011 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -739,6 +800,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000012, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000012, TBF = TBF(TFI=18 TLLI=0xc0000012 DIR=DL STATE=NULL)
TBF(TFI=18 TLLI=0xc0000012 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000012, IMSI '' -> '001001000000018'
Send dowlink assignment for TBF(TFI=18 TLLI=0xc0000012 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000018)
TBF(TFI=18 TLLI=0xc0000012 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=18 TLLI=0xc0000012 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -759,6 +821,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000013, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000013, TBF = TBF(TFI=19 TLLI=0xc0000013 DIR=DL STATE=NULL)
TBF(TFI=19 TLLI=0xc0000013 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000013, IMSI '' -> '001001000000019'
Send dowlink assignment for TBF(TFI=19 TLLI=0xc0000013 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000019)
TBF(TFI=19 TLLI=0xc0000013 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=19 TLLI=0xc0000013 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -779,6 +842,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000014, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000014, TBF = TBF(TFI=20 TLLI=0xc0000014 DIR=DL STATE=NULL)
TBF(TFI=20 TLLI=0xc0000014 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000014, IMSI '' -> '001001000000020'
Send dowlink assignment for TBF(TFI=20 TLLI=0xc0000014 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000020)
TBF(TFI=20 TLLI=0xc0000014 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=20 TLLI=0xc0000014 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -799,6 +863,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000015, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000015, TBF = TBF(TFI=21 TLLI=0xc0000015 DIR=DL STATE=NULL)
TBF(TFI=21 TLLI=0xc0000015 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000015, IMSI '' -> '001001000000021'
Send dowlink assignment for TBF(TFI=21 TLLI=0xc0000015 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000021)
TBF(TFI=21 TLLI=0xc0000015 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=21 TLLI=0xc0000015 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -819,6 +884,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000016, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000016, TBF = TBF(TFI=22 TLLI=0xc0000016 DIR=DL STATE=NULL)
TBF(TFI=22 TLLI=0xc0000016 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000016, IMSI '' -> '001001000000022'
Send dowlink assignment for TBF(TFI=22 TLLI=0xc0000016 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000022)
TBF(TFI=22 TLLI=0xc0000016 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=22 TLLI=0xc0000016 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -839,6 +905,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000017, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000017, TBF = TBF(TFI=23 TLLI=0xc0000017 DIR=DL STATE=NULL)
TBF(TFI=23 TLLI=0xc0000017 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000017, IMSI '' -> '001001000000023'
Send dowlink assignment for TBF(TFI=23 TLLI=0xc0000017 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000023)
TBF(TFI=23 TLLI=0xc0000017 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=23 TLLI=0xc0000017 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -859,6 +926,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000018, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000018, TBF = TBF(TFI=24 TLLI=0xc0000018 DIR=DL STATE=NULL)
TBF(TFI=24 TLLI=0xc0000018 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000018, IMSI '' -> '001001000000024'
Send dowlink assignment for TBF(TFI=24 TLLI=0xc0000018 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000024)
TBF(TFI=24 TLLI=0xc0000018 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=24 TLLI=0xc0000018 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -879,6 +947,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc0000019, partly confirmed
Attaching TBF to MS object, TLLI = 0xc0000019, TBF = TBF(TFI=25 TLLI=0xc0000019 DIR=DL STATE=NULL)
TBF(TFI=25 TLLI=0xc0000019 DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc0000019, IMSI '' -> '001001000000025'
Send dowlink assignment for TBF(TFI=25 TLLI=0xc0000019 DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000025)
TBF(TFI=25 TLLI=0xc0000019 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=25 TLLI=0xc0000019 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -899,6 +968,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc000001a, partly confirmed
Attaching TBF to MS object, TLLI = 0xc000001a, TBF = TBF(TFI=26 TLLI=0xc000001a DIR=DL STATE=NULL)
TBF(TFI=26 TLLI=0xc000001a DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc000001a, IMSI '' -> '001001000000026'
Send dowlink assignment for TBF(TFI=26 TLLI=0xc000001a DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000026)
TBF(TFI=26 TLLI=0xc000001a DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=26 TLLI=0xc000001a DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -919,6 +989,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc000001b, partly confirmed
Attaching TBF to MS object, TLLI = 0xc000001b, TBF = TBF(TFI=27 TLLI=0xc000001b DIR=DL STATE=NULL)
TBF(TFI=27 TLLI=0xc000001b DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc000001b, IMSI '' -> '001001000000027'
Send dowlink assignment for TBF(TFI=27 TLLI=0xc000001b DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000027)
TBF(TFI=27 TLLI=0xc000001b DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=27 TLLI=0xc000001b DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -939,6 +1010,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc000001c, partly confirmed
Attaching TBF to MS object, TLLI = 0xc000001c, TBF = TBF(TFI=28 TLLI=0xc000001c DIR=DL STATE=NULL)
TBF(TFI=28 TLLI=0xc000001c DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc000001c, IMSI '' -> '001001000000028'
Send dowlink assignment for TBF(TFI=28 TLLI=0xc000001c DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000028)
TBF(TFI=28 TLLI=0xc000001c DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=28 TLLI=0xc000001c DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -959,6 +1031,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc000001d, partly confirmed
Attaching TBF to MS object, TLLI = 0xc000001d, TBF = TBF(TFI=29 TLLI=0xc000001d DIR=DL STATE=NULL)
TBF(TFI=29 TLLI=0xc000001d DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc000001d, IMSI '' -> '001001000000029'
Send dowlink assignment for TBF(TFI=29 TLLI=0xc000001d DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000029)
TBF(TFI=29 TLLI=0xc000001d DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=29 TLLI=0xc000001d DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -979,6 +1052,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc000001e, partly confirmed
Attaching TBF to MS object, TLLI = 0xc000001e, TBF = TBF(TFI=30 TLLI=0xc000001e DIR=DL STATE=NULL)
TBF(TFI=30 TLLI=0xc000001e DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc000001e, IMSI '' -> '001001000000030'
Send dowlink assignment for TBF(TFI=30 TLLI=0xc000001e DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000030)
TBF(TFI=30 TLLI=0xc000001e DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=30 TLLI=0xc000001e DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
@@ -999,6 +1073,7 @@ Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0xc000001f, partly confirmed
Attaching TBF to MS object, TLLI = 0xc000001f, TBF = TBF(TFI=31 TLLI=0xc000001f DIR=DL STATE=NULL)
TBF(TFI=31 TLLI=0xc000001f DIR=DL STATE=NULL) [DOWNLINK] START
+Modifying MS object, TLLI = 0xc000001f, IMSI '' -> '001001000000031'
Send dowlink assignment for TBF(TFI=31 TLLI=0xc000001f DIR=DL STATE=NULL) on PCH, no TBF exist (IMSI=001001000000031)
TBF(TFI=31 TLLI=0xc000001f DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=31 TLLI=0xc000001f DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
diff --git a/tests/tbf/TbfTest.ok b/tests/tbf/TbfTest.ok
index cd96caa7..984e735e 100644
--- a/tests/tbf/TbfTest.ok
+++ b/tests/tbf/TbfTest.ok
@@ -1,4 +1,6 @@
=== start test_tbf_delayed_release ===
=== end test_tbf_delayed_release ===
+=== start test_tbf_imsi ===
+=== end test_tbf_imsi ===
=== start test_tbf_exhaustion ===
=== end test_tbf_exhaustion ===