diff options
author | Harald Welte <laforge@gnumonks.org> | 2009-07-05 14:10:01 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2009-07-05 14:10:01 +0200 |
commit | f0465bd6cb530f2a5badb169f70aaa2df1670db4 (patch) | |
tree | 193db7cd4e6667d52f965e419d12c69ccea7c63f /openbsc/src/db.c | |
parent | be3e3784dc435cc64f70b0afef299097f9884c1d (diff) | |
parent | c2e302dc84490691b17fcfa6246e40eaf9a0ab32 (diff) |
Merge branch 'master' into sms
Diffstat (limited to 'openbsc/src/db.c')
-rw-r--r-- | openbsc/src/db.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/openbsc/src/db.c b/openbsc/src/db.c index 2d9974955..fb589003d 100644 --- a/openbsc/src/db.c +++ b/openbsc/src/db.c @@ -1,6 +1,7 @@ /* Simple HLR/VLR database backend using dbi */ /* (C) 2008 by Jan Luebbe <jluebbe@debian.org> * (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org> + * (C) 2009 by Harald Welte <laforge@gnumonks.org> * All Rights Reserved * * This program is free software; you can redistribute it and/or modify @@ -59,6 +60,9 @@ static char *create_stmts[] = { "created TIMESTAMP NOT NULL, " "updated TIMESTAMP NOT NULL, " "name TEXT, " + "classmark1 NUMERIC, " + "classmark2 BLOB, " + "classmark3 BLOB, " "imei NUMERIC UNIQUE NOT NULL" ")", "CREATE TABLE IF NOT EXISTS EquipmentWatch (" @@ -295,6 +299,37 @@ int db_sync_subscriber(struct gsm_subscriber* subscriber) { return 0; } +int db_sync_equipment(struct gsm_equipment *equip) +{ + dbi_result result; + unsigned char *cm2, *cm3; + + dbi_conn_quote_binary_copy(conn, equip->classmark2, + equip->classmark2_len, &cm2); + dbi_conn_quote_binary_copy(conn, equip->classmark3, + equip->classmark3_len, &cm3); + + result = dbi_conn_queryf(conn, + "UPDATE Equipment SET " + "updated = datetime('now'), " + "classmark1 = %u, " + "classmark2 = %s, " + "classmark3 = %s " + "WHERE imei = '%s' ", + equip->classmark1, cm2, cm3, equip->imei); + + free(cm2); + free(cm3); + + if (!result) { + printf("DB: Failed to update Equipment\n"); + return -EIO; + } + + dbi_result_free(result); + return 0; +} + int db_subscriber_alloc_tmsi(struct gsm_subscriber* subscriber) { dbi_result result=NULL; char* tmsi_quoted; @@ -329,6 +364,9 @@ int db_subscriber_assoc_imei(struct gsm_subscriber* subscriber, char imei[GSM_IM u_int64_t equipment_id, watch_id; dbi_result result; + strncpy(subscriber->equipment.imei, imei, + sizeof(subscriber->equipment.imei)-1), + result = dbi_conn_queryf(conn, "INSERT OR IGNORE INTO Equipment " "(imei, created, updated) " |