#ifndef _FMD_ADM_H
#define _FMD_ADM_H
#include <fm/fmd_api.h>
#ifdef __cplusplus
extern "C" {
#endif
#define FMD_ADM_VERSION 1
#define FMD_ADM_PROGRAM 0
typedef struct fmd_adm fmd_adm_t;
extern fmd_adm_t *fmd_adm_open(const char *, uint32_t, int);
extern void fmd_adm_close(fmd_adm_t *);
extern const char *fmd_adm_errmsg(fmd_adm_t *);
typedef struct fmd_adm_stats {
fmd_stat_t *ams_buf;
uint_t ams_len;
} fmd_adm_stats_t;
extern int fmd_adm_stats_read(fmd_adm_t *, const char *, fmd_adm_stats_t *);
extern int fmd_adm_stats_free(fmd_adm_t *, fmd_adm_stats_t *);
typedef struct fmd_adm_modinfo {
const char *ami_name;
const char *ami_desc;
const char *ami_vers;
uint_t ami_flags;
} fmd_adm_modinfo_t;
#define FMD_ADM_MOD_FAILED 0x1
typedef int fmd_adm_module_f(const fmd_adm_modinfo_t *, void *);
extern int fmd_adm_module_iter(fmd_adm_t *, fmd_adm_module_f *, void *);
extern int fmd_adm_module_load(fmd_adm_t *, const char *);
extern int fmd_adm_module_unload(fmd_adm_t *, const char *);
extern int fmd_adm_module_reset(fmd_adm_t *, const char *);
extern int fmd_adm_module_stats(fmd_adm_t *, const char *, fmd_adm_stats_t *);
extern int fmd_adm_module_gc(fmd_adm_t *, const char *);
typedef struct fmd_adm_rsrcinfo {
const char *ari_fmri;
const char *ari_uuid;
const char *ari_case;
uint_t ari_flags;
} fmd_adm_rsrcinfo_t;
#define FMD_ADM_RSRC_FAULTY 0x1
#define FMD_ADM_RSRC_UNUSABLE 0x2
#define FMD_ADM_RSRC_INVISIBLE 0x4
typedef struct fmd_adm_caseinfo {
const char *aci_uuid;
const char *aci_code;
const char *aci_url;
nvlist_t *aci_event;
} fmd_adm_caseinfo_t;
typedef int fmd_adm_rsrc_f(const fmd_adm_rsrcinfo_t *, void *);
typedef int fmd_adm_case_f(const fmd_adm_caseinfo_t *, void *);
extern int fmd_adm_rsrc_count(fmd_adm_t *, int, uint32_t *);
extern int fmd_adm_rsrc_iter(fmd_adm_t *, int, fmd_adm_rsrc_f *, void *);
extern int fmd_adm_rsrc_flush(fmd_adm_t *, const char *);
extern int fmd_adm_rsrc_repaired(fmd_adm_t *, const char *);
extern int fmd_adm_rsrc_replaced(fmd_adm_t *, const char *);
extern int fmd_adm_rsrc_acquit(fmd_adm_t *, const char *, const char *);
extern int fmd_adm_case_repair(fmd_adm_t *, const char *);
extern int fmd_adm_case_acquit(fmd_adm_t *, const char *);
extern int fmd_adm_case_iter(fmd_adm_t *, const char *, fmd_adm_case_f *,
void *);
typedef struct fmd_adm_serdinfo {
const char *asi_name;
uint64_t asi_delta;
uint64_t asi_n;
uint64_t asi_t;
uint_t asi_count;
uint_t asi_flags;
} fmd_adm_serdinfo_t;
#define FMD_ADM_SERD_FIRED 0x1
typedef int fmd_adm_serd_f(const fmd_adm_serdinfo_t *, void *);
extern int fmd_adm_serd_iter(fmd_adm_t *, const char *,
fmd_adm_serd_f *, void *);
extern int fmd_adm_serd_reset(fmd_adm_t *, const char *, const char *);
typedef void fmd_adm_xprt_f(id_t, void *);
extern int fmd_adm_xprt_iter(fmd_adm_t *, fmd_adm_xprt_f *, void *);
extern int fmd_adm_xprt_stats(fmd_adm_t *, id_t, fmd_adm_stats_t *);
extern int fmd_adm_log_rotate(fmd_adm_t *, const char *);
#ifdef __cplusplus
}
#endif
#endif