summaryrefslogtreecommitdiffstats
path: root/osmo-gsup-hlr/src/db_hlr.c
diff options
context:
space:
mode:
Diffstat (limited to 'osmo-gsup-hlr/src/db_hlr.c')
-rw-r--r--osmo-gsup-hlr/src/db_hlr.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/osmo-gsup-hlr/src/db_hlr.c b/osmo-gsup-hlr/src/db_hlr.c
index baa0456..ca44e8e 100644
--- a/osmo-gsup-hlr/src/db_hlr.c
+++ b/osmo-gsup-hlr/src/db_hlr.c
@@ -135,3 +135,48 @@ out:
return ret;
}
+
+int db_subscr_purge(struct db_context *dbc, const char *imsi, bool is_ps)
+{
+ sqlite3_stmt *stmt = dbc->stmt[UPD_VLR_BY_ID];
+ int rc, ret = 1;
+
+ if (is_ps)
+ stmt = dbc->stmt[UPD_PURGE_PS_BY_IMSI];
+ else
+ stmt = dbc->stmt[UPD_PURGE_CS_BY_IMSI];
+
+ rc = sqlite3_bind_int(stmt, 1, 1);
+ if (rc != SQLITE_OK) {
+ LOGP(DAUC, LOGL_ERROR, "Error binding Purged: %d\n", rc);
+ return -1;
+ }
+
+ rc = sqlite3_bind_text(stmt, 2, imsi, -1, SQLITE_STATIC);
+ if (rc != SQLITE_OK) {
+ LOGP(DAUC, LOGL_ERROR, "Error binding IMSI: %d\n", rc);
+ ret = -1;
+ goto out;
+ }
+
+ /* execute the statement */
+ rc = sqlite3_step(stmt);
+ if (rc != SQLITE_DONE) {
+ LOGP(DAUC, LOGL_ERROR, "Error setting Purged: %d\n", rc);
+ ret = -2;
+ goto out;
+ }
+ /* FIXME: return 0 in case IMSI not known */
+out:
+ /* remove bindings and reset statement to be re-executed */
+ rc = sqlite3_clear_bindings(stmt);
+ if (rc != SQLITE_OK) {
+ LOGP(DAUC, LOGL_ERROR, "Error clearing bindings: %d\n", rc);
+ }
+ rc = sqlite3_reset(stmt);
+ if (rc != SQLITE_OK) {
+ LOGP(DAUC, LOGL_ERROR, "Error in sqlite3_reset: %d\n", rc);
+ }
+
+ return ret;
+}