int g_lock_locks(struct g_lock_ctx *ctx,
int (*fn)(const char *name, void *private_data),
void *private_data);
-NTSTATUS g_lock_dump(struct g_lock_ctx *ctx, const char *name,
+NTSTATUS g_lock_dump(struct g_lock_ctx *ctx, TDB_DATA key,
void (*fn)(const struct g_lock_rec *locks,
size_t num_locks,
const uint8_t *data,
struct g_lock_dump_state {
TALLOC_CTX *mem_ctx;
- const char *name;
+ TDB_DATA key;
void (*fn)(const struct g_lock_rec *locks,
size_t num_locks,
const uint8_t *data,
ok = g_lock_parse(data.dptr, data.dsize, &lck);
if (!ok) {
DBG_DEBUG("g_lock_parse failed for %s\n",
- state->name);
+ hex_encode_talloc(talloc_tos(),
+ state->key.dptr,
+ state->key.dsize));
state->status = NT_STATUS_INTERNAL_DB_CORRUPTION;
return;
}
state->status = NT_STATUS_OK;
}
-NTSTATUS g_lock_dump(struct g_lock_ctx *ctx, const char *name,
+NTSTATUS g_lock_dump(struct g_lock_ctx *ctx, TDB_DATA key,
void (*fn)(const struct g_lock_rec *locks,
size_t num_locks,
const uint8_t *data,
void *private_data)
{
struct g_lock_dump_state state = {
- .mem_ctx = ctx, .name = name,
+ .mem_ctx = ctx, .key = key,
.fn = fn, .private_data = private_data
};
NTSTATUS status;
- status = dbwrap_parse_record(ctx->db, string_term_tdb_data(name),
- g_lock_dump_fn, &state);
+ status = dbwrap_parse_record(ctx->db, key, g_lock_dump_fn, &state);
if (!NT_STATUS_IS_OK(status)) {
DBG_DEBUG("dbwrap_parse_record returned %s\n",
nt_errstr(status));
state = (struct smbd_claim_version_state) { .mem_ctx = ctx };
- status = g_lock_dump(ctx, name, smbd_claim_version_parser, &state);
+ status = g_lock_dump(ctx, string_term_tdb_data(name),
+ smbd_claim_version_parser, &state);
if (!NT_STATUS_IS_OK(status) &&
!NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) {
DBG_ERR("Could not read samba_version_string\n");
goto fail;
}
- status = g_lock_dump(ctx, lockname, lock2_parser, &state);
+ status = g_lock_dump(ctx, string_term_tdb_data(lockname),
+ lock2_parser, &state);
if (!NT_STATUS_IS_OK(status)) {
fprintf(stderr, "g_lock_dump failed: %s\n",
nt_errstr(status));
state.lock_type = G_LOCK_READ;
state.ok = false;
- status = g_lock_dump(ctx, lockname, lock3_parser, &state);
+ status = g_lock_dump(ctx, string_term_tdb_data(lockname),
+ lock3_parser, &state);
if (!NT_STATUS_EQUAL(status, NT_STATUS_OK)) {
fprintf(stderr, "g_lock_dump returned %s\n",
nt_errstr(status));
state.lock_type = G_LOCK_WRITE;
state.ok = false;
- status = g_lock_dump(ctx, lockname, lock3_parser, &state);
+ status = g_lock_dump(ctx, string_term_tdb_data(lockname),
+ lock3_parser, &state);
if (!NT_STATUS_EQUAL(status, NT_STATUS_OK)) {
fprintf(stderr, "g_lock_dump returned %s\n",
nt_errstr(status));
.me = messaging_server_id(msg)
};
- status = g_lock_dump(ctx, lockname, lock4_check, &state);
+ status = g_lock_dump(ctx, string_term_tdb_data(lockname),
+ lock4_check, &state);
if (!NT_STATUS_IS_OK(status)) {
fprintf(stderr, "g_lock_dump failed: %s\n",
nt_errstr(status));
for (i=0; i<nprocs; i++) {
struct lock5_parser_state state;
- status = g_lock_dump(ctx, lockname, lock5_parser, &state);
+ status = g_lock_dump(ctx, string_term_tdb_data(lockname),
+ lock5_parser, &state);
if (!NT_STATUS_IS_OK(status)) {
fprintf(stderr, "g_lock_dump returned %s\n",
nt_errstr(status));
{
struct lock6_parser_state state;
- status = g_lock_dump(ctx, lockname, lock6_parser, &state);
+ status = g_lock_dump(ctx, string_term_tdb_data(lockname),
+ lock6_parser, &state);
if (!NT_STATUS_IS_OK(status)) {
fprintf(stderr, "g_lock_dump returned %s\n",
nt_errstr(status));
goto done;
}
- (void)g_lock_dump(g_ctx, argv[0], net_g_lock_dump_fn, NULL);
+ (void)g_lock_dump(g_ctx, string_term_tdb_data(argv[0]),
+ net_g_lock_dump_fn, NULL);
ret = 0;
done: