aboutsummaryrefslogtreecommitdiffstats
path: root/src/libvlr
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-03-22 16:03:49 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2018-03-22 17:06:28 +0100
commit7a2f58ea63a777dcda1dd8ff1e7c2459ba2758c6 (patch)
tree8313887764e268b6851c4e2d5a64d089a16e6a40 /src/libvlr
parentc01e90933fef6449f64db65a63590a6507bae34a (diff)
dissolve libcommon: drop gsm_subscriber_base.c, move vlr_subscr_* to vlr.c
Diffstat (limited to 'src/libvlr')
-rw-r--r--src/libvlr/vlr.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c
index 01e7ee104..3e14593ad 100644
--- a/src/libvlr/vlr.c
+++ b/src/libvlr/vlr.c
@@ -76,6 +76,33 @@ uint32_t vlr_timer(struct vlr_instance *vlr, uint32_t timer)
return vlr->cfg.timer[tidx];
}
+/* return static buffer with printable name of VLR subscriber */
+const char *vlr_subscr_name(struct vlr_subscr *vsub)
+{
+ static char buf[32];
+ if (!vsub)
+ return "unknown";
+ if (vsub->msisdn[0])
+ snprintf(buf, sizeof(buf), "MSISDN:%s", vsub->msisdn);
+ else if (vsub->imsi[0])
+ snprintf(buf, sizeof(buf), "IMSI:%s", vsub->imsi);
+ else if (vsub->tmsi != GSM_RESERVED_TMSI)
+ snprintf(buf, sizeof(buf), "TMSI:0x%08x", vsub->tmsi);
+ else if (vsub->tmsi_new != GSM_RESERVED_TMSI)
+ snprintf(buf, sizeof(buf), "TMSI(new):0x%08x", vsub->tmsi_new);
+ else
+ return "unknown";
+ buf[sizeof(buf)-1] = '\0';
+ return buf;
+}
+
+const char *vlr_subscr_msisdn_or_name(struct vlr_subscr *vsub)
+{
+ if (!vsub || !vsub->msisdn[0])
+ return vlr_subscr_name(vsub);
+ return vsub->msisdn;
+}
+
struct vlr_subscr *_vlr_subscr_find_by_imsi(struct vlr_instance *vlr,
const char *imsi,
const char *file, int line)