// Copyright 2014-2023 Google LLC
//
#ifndef ZST_H
#define ZST_H

/*
 * Zfs send Stream Traversal
 * Parse ZFS send stream and for each record, validate and
 * invoke callback if registered for this specific record type
 *
 */

typedef int (*zst_callback_t)(int, void *, void *);

typedef struct {
    int rtype;
    zst_callback_t cb;
    void *arg;
} zst_callback_descr_t;

typedef struct zst_handle zst_handle_t;

int zst_register_callback(zst_handle_t *, zst_callback_descr_t *);
zst_handle_t *zst_init(int);
int zst_fini(zst_handle_t *);
int zst_traverse(zst_handle_t *);

#endif
