| Current File : //usr/include/shadow_svc.h |
/*
* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
*/
#ifndef _SHADOW_SVC_H
#define _SHADOW_SVC_H
#include <libnvpair.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef int shadow_svc_handle_t;
/* door call return values */
typedef enum {
SHADOW_SVC_RET_SUCCESS = 0, /* General success */
SHADOW_SVC_RET_FAIL, /* General failure */
SHADOW_SVC_RET_PERMISSION_DENIED, /* Insufficient privilege */
SHADOW_SVC_RET_BAD_REQUEST, /* Bad command or argument */
SHADOW_SVC_RET_BAD_HANDLE, /* Bad service handle */
SHADOW_SVC_RET_ALREADY_STARTED, /* Migration already in progress */
SHADOW_SVC_RET_IN_PROGRESS, /* Command not yet complete */
SHADOW_SVC_RET_INTERNAL_ERROR, /* Unexpected error */
SHADOW_SVC_RET_IO_ERROR, /* Error reading/writing data */
SHADOW_SVC_RET_NO_SUCH_DATASET, /* Dataset not found */
SHADOW_SVC_RET_NO_SUCH_MOUNTPT, /* Mountpoint not found */
SHADOW_SVC_RET_OUT_OF_MEMORY, /* Insufficient memory */
SHADOW_SVC_RET_OUT_OF_FDS, /* No more file handles */
SHADOW_SVC_RET_NO_MIGRATIONS, /* No migrations in progress */
SHADOW_SVC_RET_STOPPED /* Migration of dataset was stopped */
} shadow_svc_rv_t;
/*
* Status result nvlist content
*
* The nvlist returned on successful statistics retrieval contains:
*
* {
* uint64 SHADOW_SVC_STATUS_COUNT
* nvlist_t_array[SHADOW_SVC_STATUS_COUNT] SHADOW_SVC_STATUS_WRAPPER
* }
*
* The SHADOW_SVC_STATUS_COUNT may be zero, in which case no array will
* be present.
*
* Each element of the SHADOW_SVC_STATUS_WRAPPER array is an nvlist_t with
* {
* string SHADOW_SVC_STATUS_DATASET
* uint64 SHADOW_SVC_STATUS_XFERD
* uint64 SHADOW_SVC_STATUS_LEFT
* int32 SHADOW_SVC_STATUS_ERRORS
* uint64 SHADOW_SVC_STATUS_ELAPSED
* boolean SHADOW_SVC_STATUS_COMPLETE
* }
*/
#define SHADOW_SVC_STATUS_COUNT "status-count" /* int count datasets */
#define SHADOW_SVC_STATUS_WRAPPER "status-array" /* nvlist_t[] statii */
#define SHADOW_SVC_STATUS_DATASET "dataset" /* string */
#define SHADOW_SVC_STATUS_XFERD "xferd" /* uint64_t bytes */
#define SHADOW_SVC_STATUS_LEFT "remaining" /* uint64_t bytes */
#define SHADOW_SVC_STATUS_ERRORS "errors" /* int count of errors */
#define SHADOW_SVC_STATUS_ELAPSED "elapsed" /* uint64_t secs */
#define SHADOW_SVC_STATUS_COMPLETE "complete" /* boolean_t finished? */
/*
* Errors result nvlist content
*
* The nvlist returned on successful error info retrieval contains:
* {
* uint64 SHADOW_SVC_ERRORS_COUNT
* nvlist_t_array[SHADOW_SVC_ERRORS_COUNT] SHADOW_SVC_ERRORS_WRAPPER
* }
*
* The SHADOW_SVC_ERRORS_COUNT may be zero, in which case no array will
* be present.
*
* Each element of the SHADOW_SVC_ERRORS_WRAPPER array is an nvlist_t with
* {
* string SHADOW_SVC_ERROR_DATASET
* uint64 SHADOW_SVC_ERROR_COUNT
* nvlist_t_array[SHADOW_SVC_ERROR_COUNT] SHADOW_SVC_ERROR_LIST
* }
*
* The SHADOW_SVC_ERROR_COUNT may be zero, in which case no array will
* be present.
*
* Each element of the SHADOW_SVC_ERROR_LIST array is an nvlist_t with
* {
* int32 SHADOW_SVC_ERROR_ERR
* string SHADOW_SVC_ERROR_PATH
* }
*/
#define SHADOW_SVC_ERRORS_COUNT "errors-datasets" /* int count datasets */
#define SHADOW_SVC_ERRORS_WRAPPER "errors-array" /* nvlist_t[] statii */
#define SHADOW_SVC_ERROR_DATASET "dataset" /* string */
#define SHADOW_SVC_ERROR_COUNT "nerrs" /* array sizes */
#define SHADOW_SVC_ERROR_LIST "errs" /* array */
#define SHADOW_SVC_ERROR_PATH "path" /* path with issue */
#define SHADOW_SVC_ERROR_ERR "errno" /* issue */
extern shadow_svc_handle_t shadow_svc_open(void);
extern shadow_svc_rv_t shadow_svc_isstopped(shadow_svc_handle_t, const char *);
extern shadow_svc_rv_t shadow_svc_cancel(shadow_svc_handle_t, const char *);
extern shadow_svc_rv_t shadow_svc_start(shadow_svc_handle_t, const char *);
extern shadow_svc_rv_t shadow_svc_stop(shadow_svc_handle_t, const char *);
extern shadow_svc_rv_t shadow_svc_errors(shadow_svc_handle_t, const char *,
nvlist_t **);
extern shadow_svc_rv_t shadow_svc_status(shadow_svc_handle_t, const char *,
nvlist_t **);
extern const char *shadow_svc_strerror(shadow_svc_rv_t);
extern const char *shadow_svc_errname(shadow_svc_rv_t);
extern void shadow_svc_close(shadow_svc_handle_t);
#ifdef __cplusplus
}
#endif
#endif /* _SHADOW_SVC_H */