Licensing Information

Open Source Used In Cisco FXOS 1.1(4) 965
if (tdb_write(tdb, rec_ptr + sizeof(rec) + rec.key_len,
 dbuf.dptr, dbuf.dsize) == -1)
goto out;
if (dbuf.dsize != rec.data_len) {
/* update size */
rec.data_len = dbuf.dsize;
ret = rec_write(tdb, rec_ptr, &rec);
} else
ret = 0;
out:
tdb_unlock(tdb, BUCKET(hash));
return ret;
}
/* find an entry in the database given a key */
TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key)
{
unsigned hash;
tdb_off rec_ptr;
struct list_struct rec;
TDB_DATA ret = null_data;
if (tdb == NULL) {
#ifdef TDB_DEBUG
printf("tdb_fetch() called with null context\n");
#endif
return null_data;
}
/* find which hash bucket it is in */
hash = tdb_hash(&key);
tdb_lock(tdb, BUCKET(hash));
rec_ptr = tdb_find(tdb, key, hash, &rec);
if (rec_ptr) {
ret.dptr = tdb_alloc_read(tdb,
 rec_ptr + sizeof(rec) + rec.key_len,
 rec.data_len);
ret.dsize = rec.data_len;
}
tdb_unlock(tdb, BUCKET(hash));
return ret;
}