2 * $Id: dbd_resolve.c,v 1.4 2009-05-06 11:54:24 franklahm Exp $
4 * Copyright (C) Joerg Lenneis 2003
5 * All Rights Reserved. See COPYING.
10 #endif /* HAVE_CONFIG_H */
13 #include <atalk/logger.h>
15 #include <netatalk/endian.h>
16 #include <atalk/cnid_dbd_private.h>
22 /* Return the did/name pair corresponding to a CNID. */
24 int dbd_resolve(DBD *dbd, struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
29 memset(&key, 0, sizeof(key));
30 memset(&data, 0, sizeof(data));
34 key.data = (void *) &rqst->cnid;
35 key.size = sizeof(cnid_t);
37 if ((rc = dbif_get(dbd, DBIF_CNID, &key, &data, 0)) < 0) {
38 LOG(log_error, logtype_cnid, "dbd_resolve: DB Error resolving CNID %u", ntohl(rqst->cnid));
39 rply->result = CNID_DBD_RES_ERR_DB;
45 LOG(log_debug, logtype_cnid, "dbd_resolve: Could not resolve CNID %u", ntohl(rqst->cnid));
47 rply->result = CNID_DBD_RES_NOTFOUND;
51 memcpy(&rply->did, (char *) data.data + CNID_DID_OFS, sizeof(cnid_t));
53 rply->namelen = data.size - CNID_NAME_OFS;
54 rply->name = (char *)data.data + CNID_NAME_OFS;
56 LOG(log_debug, logtype_cnid, "dbd_resolve: Resolving CNID %u to did %u name %s",
57 ntohl(rqst->cnid), ntohl(rply->did), rply->name);
59 rply->result = CNID_DBD_RES_OK;