move to hex TMSI representation
In OpenBSC, we traditionally displayed a TMSI in its integer representation, which is quite unusual in the telecom world. A TMSI is normally printed as a series of 8 hex digits. This patch aligns OpenBSC with the telecom industry standard. Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
This commit is contained in:
parent
d2fa7a509a
commit
044fbe6568
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
#define GSM_SUBSCRIBER_FIRST_CONTACT 0x00000001
|
#define GSM_SUBSCRIBER_FIRST_CONTACT 0x00000001
|
||||||
/* gprs_sgsn.h defines additional flags including and above bit 16 (0x10000) */
|
/* gprs_sgsn.h defines additional flags including and above bit 16 (0x10000) */
|
||||||
#define tmsi_from_string(str) strtoul(str, NULL, 10)
|
#define tmsi_from_string(str) strtoul(str + 2, NULL, 16)
|
||||||
|
|
||||||
#define GSM_SUBSCRIBER_NO_EXPIRATION 0x0
|
#define GSM_SUBSCRIBER_NO_EXPIRATION 0x0
|
||||||
|
|
||||||
|
|
|
@ -893,9 +893,10 @@ struct gsm_subscriber *db_get_subscriber(enum gsm_subscriber_field field,
|
||||||
subscr->id = dbi_result_get_ulonglong(result, "id");
|
subscr->id = dbi_result_get_ulonglong(result, "id");
|
||||||
|
|
||||||
db_set_from_query(subscr, result);
|
db_set_from_query(subscr, result);
|
||||||
DEBUGP(DDB, "Found Subscriber: ID %llu, IMSI %s, NAME '%s', TMSI %u, EXTEN '%s', LAC %hu, AUTH %u\n",
|
DEBUGP(DDB, "Found Subscriber: ID %llu, IMSI %s, NAME '%s', "
|
||||||
subscr->id, subscr->imsi, subscr->name, subscr->tmsi, subscr->extension,
|
"TMSI 0x%08x, EXTEN '%s', LAC %hu, AUTH %u\n",
|
||||||
subscr->lac, subscr->authorized);
|
subscr->id, subscr->imsi, subscr->name, subscr->tmsi,
|
||||||
|
subscr->extension, subscr->lac, subscr->authorized);
|
||||||
dbi_result_free(result);
|
dbi_result_free(result);
|
||||||
|
|
||||||
get_equipment_by_subscr(subscr);
|
get_equipment_by_subscr(subscr);
|
||||||
|
@ -935,7 +936,7 @@ int db_subscriber_update(struct gsm_subscriber *subscr)
|
||||||
int db_sync_subscriber(struct gsm_subscriber *subscriber)
|
int db_sync_subscriber(struct gsm_subscriber *subscriber)
|
||||||
{
|
{
|
||||||
dbi_result result;
|
dbi_result result;
|
||||||
char tmsi[14];
|
char tmsi[11];
|
||||||
char *q_tmsi, *q_name, *q_extension;
|
char *q_tmsi, *q_name, *q_extension;
|
||||||
|
|
||||||
dbi_conn_quote_string_copy(conn,
|
dbi_conn_quote_string_copy(conn,
|
||||||
|
@ -944,7 +945,7 @@ int db_sync_subscriber(struct gsm_subscriber *subscriber)
|
||||||
subscriber->extension, &q_extension);
|
subscriber->extension, &q_extension);
|
||||||
|
|
||||||
if (subscriber->tmsi != GSM_RESERVED_TMSI) {
|
if (subscriber->tmsi != GSM_RESERVED_TMSI) {
|
||||||
sprintf(tmsi, "%u", subscriber->tmsi);
|
sprintf(tmsi, "0x%08x", subscriber->tmsi);
|
||||||
dbi_conn_quote_string_copy(conn,
|
dbi_conn_quote_string_copy(conn,
|
||||||
tmsi,
|
tmsi,
|
||||||
&q_tmsi);
|
&q_tmsi);
|
||||||
|
@ -1194,7 +1195,7 @@ int db_subscriber_expire(void *priv, void (*callback)(void *priv, long long unsi
|
||||||
int db_subscriber_alloc_tmsi(struct gsm_subscriber *subscriber)
|
int db_subscriber_alloc_tmsi(struct gsm_subscriber *subscriber)
|
||||||
{
|
{
|
||||||
dbi_result result = NULL;
|
dbi_result result = NULL;
|
||||||
char tmsi[14];
|
char tmsi[11];
|
||||||
char *tmsi_quoted;
|
char *tmsi_quoted;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
@ -1205,7 +1206,7 @@ int db_subscriber_alloc_tmsi(struct gsm_subscriber *subscriber)
|
||||||
if (subscriber->tmsi == GSM_RESERVED_TMSI)
|
if (subscriber->tmsi == GSM_RESERVED_TMSI)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sprintf(tmsi, "%u", subscriber->tmsi);
|
sprintf(tmsi, "0x%08x", subscriber->tmsi);
|
||||||
dbi_conn_quote_string_copy(conn, tmsi, &tmsi_quoted);
|
dbi_conn_quote_string_copy(conn, tmsi, &tmsi_quoted);
|
||||||
result = dbi_conn_queryf(conn,
|
result = dbi_conn_queryf(conn,
|
||||||
"SELECT * FROM Subscriber "
|
"SELECT * FROM Subscriber "
|
||||||
|
|
|
@ -200,7 +200,7 @@ int main()
|
||||||
alice->lac=42;
|
alice->lac=42;
|
||||||
db_sync_subscriber(alice);
|
db_sync_subscriber(alice);
|
||||||
/* Get by TMSI */
|
/* Get by TMSI */
|
||||||
snprintf(scratch_str, sizeof(scratch_str), "%"PRIu32, alice->tmsi);
|
snprintf(scratch_str, sizeof(scratch_str), "0x%08x", alice->tmsi);
|
||||||
alice_db = db_get_subscriber(GSM_SUBSCRIBER_TMSI, scratch_str);
|
alice_db = db_get_subscriber(GSM_SUBSCRIBER_TMSI, scratch_str);
|
||||||
COMPARE(alice, alice_db);
|
COMPARE(alice, alice_db);
|
||||||
SUBSCR_PUT(alice_db);
|
SUBSCR_PUT(alice_db);
|
||||||
|
@ -227,7 +227,7 @@ int main()
|
||||||
db_subscriber_assoc_imei(alice, "1234567890");
|
db_subscriber_assoc_imei(alice, "1234567890");
|
||||||
db_subscriber_assoc_imei(alice, "6543560920");
|
db_subscriber_assoc_imei(alice, "6543560920");
|
||||||
/* Get by TMSI */
|
/* Get by TMSI */
|
||||||
snprintf(scratch_str, sizeof(scratch_str), "%"PRIu32, alice->tmsi);
|
snprintf(scratch_str, sizeof(scratch_str), "0x%08x", alice->tmsi);
|
||||||
alice_db = db_get_subscriber(GSM_SUBSCRIBER_TMSI, scratch_str);
|
alice_db = db_get_subscriber(GSM_SUBSCRIBER_TMSI, scratch_str);
|
||||||
COMPARE(alice, alice_db);
|
COMPARE(alice, alice_db);
|
||||||
SUBSCR_PUT(alice_db);
|
SUBSCR_PUT(alice_db);
|
||||||
|
|
|
@ -93,7 +93,7 @@ static void test_mi_functionality(void)
|
||||||
/* tmsi code */
|
/* tmsi code */
|
||||||
mi_len = gsm48_generate_mid_from_tmsi(mi, tmsi);
|
mi_len = gsm48_generate_mid_from_tmsi(mi, tmsi);
|
||||||
gsm48_mi_to_string(mi_parsed, sizeof(mi_parsed), mi + 2, mi_len - 2);
|
gsm48_mi_to_string(mi_parsed, sizeof(mi_parsed), mi + 2, mi_len - 2);
|
||||||
COMPARE((uint32_t)strtoul(mi_parsed, NULL, 10), ==, tmsi);
|
COMPARE((uint32_t)tmsi_from_string(mi_parsed), ==, tmsi);
|
||||||
|
|
||||||
/* imsi code */
|
/* imsi code */
|
||||||
mi_len = gsm48_generate_mid_from_imsi(mi, imsi_odd);
|
mi_len = gsm48_generate_mid_from_imsi(mi, imsi_odd);
|
||||||
|
|
Loading…
Reference in New Issue