diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2014-09-17 10:56:38 +0200 |
---|---|---|
committer | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2014-09-19 11:21:35 +0200 |
commit | 91a0e8639a74231f41d14ca7cc952079cc541755 (patch) | |
tree | f908e1752528fc985f953f25f2c9e06b774d209e /openbsc/include/openbsc/gb_proxy.h | |
parent | af952baffc73dae23d9498518ec26a30f50f07f0 (diff) |
gbproxy: Separate SGSN numeric namespaces
Currently the SGSN side message's TLLI are searched without checking
the originating SGSN. This leads to collisions if both SGSN use the
same P-TMSI for different MS.
With this patch, the SGSN NSEI is stored within the tlli_info and is
used in comparisons to separate the namespaces.
Note that this type of collision cannot happen with BSS numbers,
since the tlli_info are already separated and stored per (BSS) peer.
Sponsored-by: On-Waves ehf
Diffstat (limited to 'openbsc/include/openbsc/gb_proxy.h')
-rw-r--r-- | openbsc/include/openbsc/gb_proxy.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/openbsc/include/openbsc/gb_proxy.h b/openbsc/include/openbsc/gb_proxy.h index d9731a729..d818114ba 100644 --- a/openbsc/include/openbsc/gb_proxy.h +++ b/openbsc/include/openbsc/gb_proxy.h @@ -140,6 +140,7 @@ struct gbproxy_tlli_info { struct gbproxy_tlli_state tlli; struct gbproxy_tlli_state sgsn_tlli; + uint32_t sgsn_nsei; time_t timestamp; uint8_t *imsi; @@ -211,9 +212,11 @@ struct gbproxy_tlli_info *gbproxy_find_tlli( struct gbproxy_peer *peer, uint32_t tlli); struct gbproxy_tlli_info *gbproxy_find_tlli_by_imsi( struct gbproxy_peer *peer, const uint8_t *imsi, size_t imsi_len); +struct gbproxy_tlli_info *gbproxy_find_tlli_by_any_sgsn_tlli( + struct gbproxy_peer *peer, uint32_t tlli); struct gbproxy_tlli_info *gbproxy_find_tlli_by_sgsn_tlli( struct gbproxy_peer *peer, - uint32_t tlli); + uint32_t tlli, uint32_t sgsn_nsei); struct gbproxy_tlli_info *gbproxy_find_tlli_by_ptmsi( struct gbproxy_peer *peer, uint32_t ptmsi); |