3 #endif /* HAVE_CONFIG_H */
5 #ifdef CNID_BACKEND_CDB
6 #include "cnid_cdb_private.h"
8 /* Return CNID for a given did/name. */
9 cnid_t cnid_cdb_get(struct _cnid_db *cdb, cnid_t did, const char *name, size_t len)
11 char start[CNID_DID_LEN + MAXPATHLEN + 1], *buf;
17 if (!cdb || !(db = cdb->_private) || (len > MAXPATHLEN)) {
21 memset(&key, 0, sizeof(key));
22 memset(&data, 0, sizeof(data));
25 memcpy(buf, &did, sizeof(did));
27 memcpy(buf, name, len);
28 *(buf + len) = '\0'; /* Make it a C-string. */
30 key.size = CNID_DID_LEN + len + 1;
32 while ((rc = db->db_didname->get(db->db_didname, NULL, &key, &data, 0))) {
34 if (rc != DB_NOTFOUND) {
35 LOG(log_error, logtype_default, "cnid_get: Unable to get CNID %u, name %s: %s",
36 ntohl(did), name, db_strerror(rc));
42 memcpy(&id, data.data, sizeof(id));
44 LOG(log_debug9, logtype_default, "cnid_get: Returning CNID for %u, name %s as %u",
45 ntohl(did), name, ntohl(id));
50 #endif /* CNID_BACKEND_CDB */