tbf: Always call set_tlli/confirm_tlli in update_ms
Currently the m_tlli member in GprsMs is set by the constructor,
circumventing the TLLI confirmation mechanism.
This commit replaces the get_or_create_ms() method by a create_ms()
method which takes the TLLI and the direction (UL or DL) as
parameters to select either set_tlli() or confirm_tlli(). The MS
object is instantiated with TLLI = 0, and therefore GprsMs::tlli() is
extended to return the DL TLLI if both of the other TLLI are not set.
Note that create_ms() will not check whether an MS object with a
matching TLLI is already stored in the list, so it should only be
called after a corresponding get_ms() in general.
Sponsored-by: On-Waves ehf
diff --git a/src/gprs_ms_storage.h b/src/gprs_ms_storage.h
index 1eef28f..fff9638 100644
--- a/src/gprs_ms_storage.h
+++ b/src/gprs_ms_storage.h
@@ -22,6 +22,7 @@
#include "gprs_ms.h"
#include "cxx_linuxlist.h"
+#include "tbf.h"
#include <stdint.h>
#include <stddef.h>
@@ -34,7 +35,7 @@
virtual void ms_active(class GprsMs *);
GprsMs *get_ms(uint32_t tlli, uint32_t old_tlli = 0, const char *imsi = 0) const;
- GprsMs *get_or_create_ms(uint32_t tlli, uint32_t old_tlli = 0, const char *imsi = 0);
+ GprsMs *create_ms(uint32_t tlli, enum gprs_rlcmac_tbf_direction dir);
private:
LListHead<GprsMs> m_list;