aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libmsc/db.c
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2016-06-07 15:32:16 +0200
committerHarald Welte <laforge@gnumonks.org>2016-06-14 22:20:40 +0000
commit0fcd2e2fec966ac4e17222e7f53f2d0e5a7bf0ba (patch)
tree49bb94bc7ad856f277a72fd62c650a16d21e76ea /openbsc/src/libmsc/db.c
parente152ffe14d1dfe2ffb4892ada5eede6ccb429338 (diff)
Make random extension range configurable
Previously if subscriber was automatically created it got assigned random MSISDN number between 20000 and 49999. Make it configurable with new vty command "subscriber-create-on-demand random" and expand vty tests to check it. Change-Id: I040a1d227b0c7a1601dc7c33eccb0007941408a6 Related: OS#1658
Diffstat (limited to 'openbsc/src/libmsc/db.c')
-rw-r--r--openbsc/src/libmsc/db.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/openbsc/src/libmsc/db.c b/openbsc/src/libmsc/db.c
index 9e3fb362f..b3671393a 100644
--- a/openbsc/src/libmsc/db.c
+++ b/openbsc/src/libmsc/db.c
@@ -518,7 +518,8 @@ int db_fini(void)
return 0;
}
-struct gsm_subscriber *db_create_subscriber(const char *imsi)
+struct gsm_subscriber *db_create_subscriber(const char *imsi, uint64_t smin,
+ uint64_t smax)
{
dbi_result result;
struct gsm_subscriber *subscr;
@@ -550,7 +551,7 @@ struct gsm_subscriber *db_create_subscriber(const char *imsi)
strncpy(subscr->imsi, imsi, sizeof(subscr->imsi)-1);
dbi_result_free(result);
LOGP(DDB, LOGL_INFO, "New Subscriber: ID %llu, IMSI %s\n", subscr->id, subscr->imsi);
- db_subscriber_alloc_exten(subscr);
+ db_subscriber_alloc_exten(subscr, smin, smax);
return subscr;
}
@@ -1249,13 +1250,14 @@ int db_subscriber_alloc_tmsi(struct gsm_subscriber *subscriber)
return 0;
}
-int db_subscriber_alloc_exten(struct gsm_subscriber *subscriber)
+int db_subscriber_alloc_exten(struct gsm_subscriber *subscriber, uint64_t smin,
+ uint64_t smax)
{
dbi_result result = NULL;
uint32_t try;
for (;;) {
- try = (rand()%(GSM_MAX_EXTEN-GSM_MIN_EXTEN+1)+GSM_MIN_EXTEN);
+ try = (rand() % (smax - smin + 1) + smin);
result = dbi_conn_queryf(conn,
"SELECT * FROM Subscriber "
"WHERE extension = %i",