return NULL;
}
- return ctx->fetch_locked(ctx, mem_ctx, key);
+ return dbwrap_fetch_locked(ctx, mem_ctx, key);
}
struct db_record *connections_fetch_entry(TALLOC_CTX *mem_ctx,
static int conn_traverse_fn(struct db_record *rec, void *private_data)
{
+ TDB_DATA key;
+ TDB_DATA value;
struct conn_traverse_state *state =
(struct conn_traverse_state *)private_data;
- if ((rec->key.dsize != sizeof(struct connections_key))
- || (rec->value.dsize != sizeof(struct connections_data))) {
+ key = dbwrap_record_get_key(rec);
+ value = dbwrap_record_get_value(rec);
+
+ if ((key.dsize != sizeof(struct connections_key))
+ || (value.dsize != sizeof(struct connections_data))) {
return 0;
}
- return state->fn(rec, (const struct connections_key *)rec->key.dptr,
- (const struct connections_data *)rec->value.dptr,
+ return state->fn(rec, (const struct connections_key *)key.dptr,
+ (const struct connections_data *)value.dptr,
state->private_data);
}
void *private_data),
void *private_data)
{
+ NTSTATUS status;
+ int count;
struct db_context *ctx = connections_db_ctx(False);
if (ctx == NULL) {
return -1;
}
- return ctx->traverse(ctx, fn, private_data);
+ status = dbwrap_traverse(ctx, fn, private_data, &count);
+ if (!NT_STATUS_IS_OK(status)) {
+ return -1;
+ }
+
+ return count;
}
int connections_forall(int (*fn)(struct db_record *rec,
{
struct db_context *ctx;
struct conn_traverse_state state;
+ NTSTATUS status;
+ int count;
ctx = connections_db_ctx(true);
if (ctx == NULL) {
state.fn = fn;
state.private_data = private_data;
- return ctx->traverse(ctx, conn_traverse_fn, (void *)&state);
+ status = dbwrap_traverse(ctx, conn_traverse_fn, (void *)&state, &count);
+ if (!NT_STATUS_IS_OK(status)) {
+ return -1;
+ }
+
+ return count;
}
struct conn_traverse_read_state {
static int connections_forall_read_fn(struct db_record *rec,
void *private_data)
{
+ TDB_DATA key;
+ TDB_DATA value;
struct conn_traverse_read_state *state =
(struct conn_traverse_read_state *)private_data;
- if ((rec->key.dsize != sizeof(struct connections_key))
- || (rec->value.dsize != sizeof(struct connections_data))) {
+ key = dbwrap_record_get_key(rec);
+ value = dbwrap_record_get_value(rec);
+
+ if ((key.dsize != sizeof(struct connections_key))
+ || (value.dsize != sizeof(struct connections_data))) {
return 0;
}
- return state->fn((const struct connections_key *)rec->key.dptr,
- (const struct connections_data *)rec->value.dptr,
+ return state->fn((const struct connections_key *)key.dptr,
+ (const struct connections_data *)value.dptr,
state->private_data);
}
{
struct db_context *ctx;
struct conn_traverse_read_state state;
+ NTSTATUS status;
+ int count;
ctx = connections_db_ctx(false);
if (ctx == NULL) {
state.fn = fn;
state.private_data = private_data;
- return ctx->traverse_read(ctx, connections_forall_read_fn,
- (void *)&state);
+ status = dbwrap_traverse_read(ctx, connections_forall_read_fn,
+ (void *)&state, &count);
+
+ if (!NT_STATUS_IS_OK(status)) {
+ return -1;
+ }
+
+ return count;
}
bool connections_init(bool rw)