diff options
-rw-r--r-- | src/gprs_ms.cpp | 27 | ||||
-rw-r--r-- | src/gprs_ms.h | 12 | ||||
-rw-r--r-- | src/tbf.cpp | 42 | ||||
-rw-r--r-- | src/tbf.h | 8 | ||||
-rw-r--r-- | src/tbf_dl.cpp | 1 | ||||
-rw-r--r-- | tests/tbf/TbfTest.cpp | 54 | ||||
-rw-r--r-- | tests/tbf/TbfTest.err | 75 | ||||
-rw-r--r-- | tests/tbf/TbfTest.ok | 2 |
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 @@ -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 === |