2 * $Id: dbd_delete.c,v 1.5 2009-07-12 09:21:34 franklahm Exp $
4 * Copyright (C) Joerg Lenneis 2003
5 * All Rights Reserved. See COPYING.
10 #endif /* HAVE_CONFIG_H */
14 #include <arpa/inet.h>
16 #include <atalk/logger.h>
17 #include <atalk/cnid_dbd_private.h>
23 int dbd_delete(DBD *dbd, struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply, int idx)
29 memset(&key, 0, sizeof(key));
34 buf = pack_cnid_data(rqst);
35 key.data = buf + CNID_DEVINO_OFS;
36 key.size = CNID_DEVINO_LEN;
37 if ((rc = dbif_del(dbd, DBIF_IDX_DEVINO, &key, 0)) < 0) {
38 LOG(log_error, logtype_cnid, "dbd_delete: Unable to delete entry for dev/ino: 0x%llx/0x%llx",
39 (unsigned long long)rqst->dev, (unsigned long long)rqst->ino);
40 rply->result = CNID_DBD_RES_ERR_DB;
44 LOG(log_debug, logtype_cnid, "cnid_delete: deleted dev/ino: 0x%llx/0x%llx",
45 (unsigned long long)rqst->dev, (unsigned long long)rqst->ino);
46 rply->result = CNID_DBD_RES_OK;
48 LOG(log_debug, logtype_cnid, "cnid_delete: dev/ino: 0x%llx/0x%llx not in database",
49 (unsigned long long)rqst->dev, (unsigned long long)rqst->ino);
50 rply->result = CNID_DBD_RES_NOTFOUND;
53 case DBIF_IDX_DIDNAME:
54 buf = pack_cnid_data(rqst);
55 key.data = buf + CNID_DID_OFS;
56 key.size = CNID_DID_LEN + rqst->namelen + 1;
57 if ((rc = dbif_del(dbd, DBIF_IDX_DIDNAME, &key, 0)) < 0) {
58 LOG(log_error, logtype_cnid, "dbd_delete: Unable to delete entry for DID: %lu, name: %s",
59 ntohl(rqst->did), rqst->name);
60 rply->result = CNID_DBD_RES_ERR_DB;
64 LOG(log_debug, logtype_cnid, "cnid_delete: deleted DID: %lu, name: %s",
65 ntohl(rqst->did), rqst->name);
66 rply->result = CNID_DBD_RES_OK;
68 LOG(log_debug, logtype_cnid, "cnid_delete: DID: %lu, name: %s not in database",
69 ntohl(rqst->did), rqst->name);
70 rply->result = CNID_DBD_RES_NOTFOUND;
74 key.data = (void *) &rqst->cnid;
75 key.size = sizeof(rqst->cnid);
77 if ((rc = dbif_del(dbd, DBIF_CNID, &key, 0)) < 0) {
78 LOG(log_error, logtype_cnid, "dbd_delete: Unable to delete entry for CNID %u", ntohl(rqst->cnid));
79 rply->result = CNID_DBD_RES_ERR_DB;
83 LOG(log_debug, logtype_cnid, "cnid_delete: CNID %u deleted", ntohl(rqst->cnid));
84 rply->result = CNID_DBD_RES_OK;
86 LOG(log_debug, logtype_cnid, "cnid_delete: CNID %u not in database", ntohl(rqst->cnid));
87 rply->result = CNID_DBD_RES_NOTFOUND;