aboutsummaryrefslogtreecommitdiffstats
path: root/src/gsup_server.c
diff options
context:
space:
mode:
authorOliver Smith <osmith@sysmocom.de>2020-05-06 11:25:29 +0200
committerOliver Smith <osmith@sysmocom.de>2020-05-06 15:09:01 +0200
commitfca8a0a93593e0fe1d616a1473ad7295c7092b43 (patch)
tree10f2baac43fcb5c5d2accbb97ba2f4cb2c4489ae /src/gsup_server.c
parent7b4e5b1390cad9087e5d8f7b8b3344b9e2c677fa (diff)
src/hlr.c: resolve/scramble pseudo IMSI in GSUP
Resolve the pseudonymous IMSI to the real IMSI as soon as possible, when a GSUP message arrives. Use the real IMSI internally in OsmoHLR, so the existing logic does not need to be changed. Scramble the IMSI back to the pseudonymous IMSI in one common place (gsup_server_send_req_response) right before responding to GSUP messages. Related: OS#4476 Change-Id: I400810f96efca7746dd4ba1bed666acaea425e8a
Diffstat (limited to 'src/gsup_server.c')
-rw-r--r--src/gsup_server.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gsup_server.c b/src/gsup_server.c
index 888507c..ca2ad5f 100644
--- a/src/gsup_server.c
+++ b/src/gsup_server.c
@@ -30,6 +30,7 @@
#include <osmocom/hlr/gsup_server.h>
#include <osmocom/hlr/gsup_router.h>
+#include <osmocom/hlr/logging.h>
#define LOG_GSUP_CONN(conn, level, fmt, args...) \
LOGP(DLGSUP, level, "GSUP peer %s: " fmt, \
@@ -95,6 +96,11 @@ static void gsup_server_send_req_response(struct osmo_gsup_req *req, struct osmo
return;
}
+ if (req->imsi_pseudo[0]) {
+ LOGP(DPSEUDO, LOGL_DEBUG, "pseudo IMSI scramble: '%s' => '%s'\n", response->imsi, req->imsi_pseudo);
+ strncpy(response->imsi, req->imsi_pseudo, sizeof(response->imsi));
+ }
+
rc = osmo_gsup_encode(msg, response);
if (rc) {
LOG_GSUP_REQ(req, LOGL_ERROR, "Unable to encode: {%s}\n",