+ talloc_free(frame);
+ return status;
+}
+
+struct smbXsrv_open_global_traverse_state {
+ int (*fn)(struct smbXsrv_open_global0 *, void *);
+ void *private_data;
+};
+
+static int smbXsrv_open_global_traverse_fn(struct db_record *rec, void *data)
+{
+ struct smbXsrv_open_global_traverse_state *state =
+ (struct smbXsrv_open_global_traverse_state*)data;
+ struct smbXsrv_open_global0 *global = NULL;
+ NTSTATUS status;
+ int ret = -1;
+
+ status = smbXsrv_open_global_parse_record(talloc_tos(), rec, &global);
+ if (!NT_STATUS_IS_OK(status)) {
+ return -1;
+ }
+
+ global->db_rec = rec;
+ ret = state->fn(global, state->private_data);
+ talloc_free(global);