aboutsummaryrefslogtreecommitdiffstats
path: root/src/bts.h
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2020-08-21 16:21:23 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2020-08-24 01:12:16 +0000
commit59fc0bda6e85b6fee1038a83ddc3099d0bdcfbcb (patch)
treeacd40021c1321219dc7cd293780bd0a52a14a63d /src/bts.h
parent0052051c07af63da98137c9f8e3b3119642eb587 (diff)
paging: pass struct osmo_mobile_identity, not encoded IE bytes
In get_paging_mi(), before this, an encoded buffer of Mobile Identity bytes is returned. Code paths following this repeatedly decode the Mobile Identity bytes, e.g. for logging. Also, in get_paging_mi(), since the TMSI is read in from a different encoding than a typical Mobile Identity IE, the TMSI was manually encoded into a typical Mobile Identity IE. This is essentially a code dup of osmo_mobile_identity_encode(). Stop this madness. Instead, in get_paging_mi(), return a decoded struct osmo_mobile_identity. Code paths after this use the struct osmo_mobile_identity directly without repeated decoding. At the point of finally needing an encoded Mobile Identity IE (in Encoding::write_paging_request()), do a proper osmo_mobile_identity_encode(). Since this may return errors, add an rc check for the caller of write_paging_request(), gprs_rlcmac_paging_request(). A side effect is stricter validation of the Mobile Identity passing through the Paging code path. Before, invalid MI might have passed through unnoticed. Change-Id: Iad845acb0096b75dc453105c9c16b2252879b4ca
Diffstat (limited to 'src/bts.h')
-rw-r--r--src/bts.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/bts.h b/src/bts.h
index edccc280..5a1b162c 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -309,7 +309,7 @@ public:
int current_frame_number() const;
/** add paging to paging queue(s) */
- int add_paging(uint8_t chan_needed, const uint8_t *mi, uint8_t mi_len);
+ int add_paging(uint8_t chan_needed, const struct osmo_mobile_identity *mi);
gprs_rlcmac_dl_tbf *dl_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts);
gprs_rlcmac_ul_tbf *ul_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts);