summaryrefslogtreecommitdiffstats
path: root/utils/nfsdcld/sqlite.c
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2012-04-26 11:46:14 -0400
committerSteve Dickson <steved@redhat.com>2012-04-26 13:25:04 -0400
commit53f6dbee36fb72acb9a88413fc35c4e71200d3b8 (patch)
tree8b81ef4dc4c6068e7163221abbccbb54c6d39d50 /utils/nfsdcld/sqlite.c
parent3e859abefffafd8718b5f1f76da7b129fc18e281 (diff)
downloadnfs-utils-53f6dbee36fb72acb9a88413fc35c4e71200d3b8.tar.gz
nfs-utils-53f6dbee36fb72acb9a88413fc35c4e71200d3b8.tar.xz
nfs-utils-53f6dbee36fb72acb9a88413fc35c4e71200d3b8.zip
nfsdcld: add remove functionality
Allow the kernel to ask for removal of a client record. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'utils/nfsdcld/sqlite.c')
-rw-r--r--utils/nfsdcld/sqlite.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/utils/nfsdcld/sqlite.c b/utils/nfsdcld/sqlite.c
index f70568e..a198c34 100644
--- a/utils/nfsdcld/sqlite.c
+++ b/utils/nfsdcld/sqlite.c
@@ -251,3 +251,39 @@ out_err:
sqlite3_finalize(stmt);
return ret;
}
+
+/* Remove a client record */
+int
+sqlite_remove_client(const unsigned char *clname, const size_t namelen)
+{
+ int ret;
+ sqlite3_stmt *stmt = NULL;
+
+ ret = sqlite3_prepare_v2(dbh, "DELETE FROM clients WHERE id==?", -1,
+ &stmt, NULL);
+ if (ret != SQLITE_OK) {
+ xlog(L_ERROR, "%s: statement prepare failed: %s",
+ __func__, sqlite3_errmsg(dbh));
+ goto out_err;
+ }
+
+ ret = sqlite3_bind_blob(stmt, 1, (const void *)clname, namelen,
+ SQLITE_STATIC);
+ if (ret != SQLITE_OK) {
+ xlog(L_ERROR, "%s: bind blob failed: %s", __func__,
+ sqlite3_errmsg(dbh));
+ goto out_err;
+ }
+
+ ret = sqlite3_step(stmt);
+ if (ret == SQLITE_DONE)
+ ret = SQLITE_OK;
+ else
+ xlog(L_ERROR, "%s: unexpected return code from delete: %d",
+ __func__, ret);
+
+out_err:
+ xlog(D_GENERAL, "%s: returning %d", __func__, ret);
+ sqlite3_finalize(stmt);
+ return ret;
+}