fix subscriber random extension allocation range
The VTY config allows above 32bit range extensions, but db_subscriber_alloc_exten() was unable to generate extensions outside of 32bit. Add VTY regression test and fix the problem by using proper 64bit types. Related: OS#2253 Change-Id: I9afe6a8833004ecd2f3f936b2d5aa4de8e7dbcb0
This commit is contained in:
parent
34ce3d93c5
commit
7590ff3fd6
|
@ -1260,13 +1260,13 @@ int db_subscriber_alloc_exten(struct gsm_subscriber *subscriber, uint64_t smin,
|
|||
uint64_t smax)
|
||||
{
|
||||
dbi_result result = NULL;
|
||||
uint32_t try;
|
||||
uint64_t try;
|
||||
|
||||
for (;;) {
|
||||
try = (rand() % (smax - smin + 1) + smin);
|
||||
result = dbi_conn_queryf(conn,
|
||||
"SELECT * FROM Subscriber "
|
||||
"WHERE extension = %i",
|
||||
"WHERE extension = %"PRIu64,
|
||||
try
|
||||
);
|
||||
if (!result) {
|
||||
|
@ -1284,8 +1284,8 @@ int db_subscriber_alloc_exten(struct gsm_subscriber *subscriber, uint64_t smin,
|
|||
}
|
||||
dbi_result_free(result);
|
||||
}
|
||||
sprintf(subscriber->extension, "%i", try);
|
||||
DEBUGP(DDB, "Allocated extension %i for IMSI %s.\n", try, subscriber->imsi);
|
||||
sprintf(subscriber->extension, "%"PRIu64, try);
|
||||
DEBUGP(DDB, "Allocated extension %"PRIu64 " for IMSI %s.\n", try, subscriber->imsi);
|
||||
return db_sync_subscriber(subscriber);
|
||||
}
|
||||
/*
|
||||
|
|
|
@ -485,6 +485,17 @@ class TestVTYNITB(TestVTYGenericBSC):
|
|||
self.assert_(res.find("subscriber-create-on-demand random 9999999998 9999999999"))
|
||||
self.vty.command("end")
|
||||
|
||||
res = self.vty.command('subscriber create imsi ' + imsi)
|
||||
print(res)
|
||||
self.assert_(res.find(" IMSI: " + imsi) > 0)
|
||||
self.assert_(res.find("9999999998") > 0 or res.find("9999999999") > 0)
|
||||
self.assert_(res.find(" Extension: ") > 0)
|
||||
|
||||
res = self.vty.command('subscriber imsi ' + imsi + ' delete')
|
||||
self.assert_("" == res)
|
||||
|
||||
res = self.vty.command('show subscriber imsi '+imsi)
|
||||
self.assert_(('% No subscriber found for imsi ' + imsi) == res)
|
||||
|
||||
|
||||
def testSubscriberSettings(self):
|
||||
|
|
Loading…
Reference in New Issue