8c4f9701439555b41fbfe7848508f53b52166007Janice Chang * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * BSD 3 Clause License
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Copyright (c) 2007, The Storage Networking Industry Association.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Redistribution and use in source and binary forms, with or without
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * modification, are permitted provided that the following conditions
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * - Redistributions of source code must retain the above copyright
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * notice, this list of conditions and the following disclaimer.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * - Redistributions in binary form must reproduce the above copyright
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * notice, this list of conditions and the following disclaimer in
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * the documentation and/or other materials provided with the
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * distribution.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * - Neither the name of The Storage Networking Industry Association (SNIA)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * nor the names of its contributors may be used to endorse or promote
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * products derived from this software without specific prior written
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * permission.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * POSSIBILITY OF SUCH DAMAGE.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/* Copyright (c) 2007, The Storage Networking Industry Association. */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/* Copyright (c) 1996, 1997 PDC, Network Appliance. All Rights Reserved */
faac71c002f7c7a98741f991b25937b24f309df0Jan Kryl * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar#define XDR_AND_SIZE(func) (bool_t(*)(XDR*, ...))xdr_##func, sizeof (func)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/* Connection data structure. */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar msg_info_t conn_msginfo; /* received request or reply message */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef void (*ndmp_con_handler_func_t) (struct ndmp_connection *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef void ndmp_msg_handler_func_t(struct ndmp_connection *, void *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Function prototypes.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarextern ndmp_connection_t *ndmp_create_connection(void);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarextern void ndmp_destroy_connection(ndmp_connection_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarextern int ndmp_process_requests(ndmp_connection_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarextern int ndmp_send_response(ndmp_connection_t *,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarextern int ndmp_send_request(ndmp_connection_t *,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarextern int ndmp_send_request_lock(ndmp_connection_t *,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarextern void ndmp_free_message(ndmp_connection_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarextern void ndmp_set_client_data(ndmp_connection_t *,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarextern void *ndmp_get_client_data(ndmp_connection_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarextern void ndmp_set_version(ndmp_connection_t *,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarextern ushort_t ndmp_get_version(ndmp_connection_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarextern void ndmp_set_authorized(ndmp_connection_t *,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * NDMP daemon callback functions.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Called by backup/recover modules.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef char *ndmpd_get_env_func_t(void *, char *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_add_env_func_t(void *, char *, char *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef void *ndmpd_get_name_func_t(void *, ulong_t);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_dispatch_func_t(void *, boolean_t);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_log_func_t(void *, char *, ...);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_log_func_v3_t(void *, ndmp_log_type, ulong_t,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar char *, ...);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef void ndmpd_file_handler_func_t(void *, int, ulong_t);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_add_file_handler_func_t(void *, void *, int, ulong_t,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_remove_file_handler_func_t(void *, int);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_write_func_t(void *, char *, ulong_t);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_file_history_path_func_t(void *, char *, struct stat64 *,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_file_history_dir_func_t(void *, char *, ulong_t,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_file_history_node_func_t(void *, ulong_t, struct stat64 *,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_seek_func_t(void *, u_longlong_t, u_longlong_t);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_read_func_t(void *, char *, ulong_t);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdartypedef int ndmpd_file_recovered_func_t(void *, char *, int);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Parameter structure passed to module start function.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmpd_add_file_handler_func_t *mp_add_file_handler_func;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmpd_remove_file_handler_func_t *mp_remove_file_handler_func;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmpd_file_history_path_func_t *mp_file_history_path_func;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmpd_file_history_dir_func_t *mp_file_history_dir_func;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmpd_file_history_node_func_t *mp_file_history_node_func;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmpd_file_recovered_func_t *mp_file_recovered_func;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * NDMP V3 params.
c1a2c7311cbde5c239d7679fc280103ef7b36bf1Janice Chang (*(m)->mp_add_env_func)((m)->mp_daemon_cookie, n, v)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (*(m)->mp_set_env_func)((m)->mp_daemon_cookie, n, v)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (*(m)->mp_get_env_func)((m)->mp_daemon_cookie, e)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (*(m)->mp_get_name_func)((m)->mp_daemon_cookie, i)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (*(m)->mp_log_func)((m)->mp_daemon_cookie, __VA_ARGS__)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (*(m)->mp_read_func)((m)->mp_daemon_cookie, b, s)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (*(m)->mp_write_func)((m)->mp_daemon_cookie, b, s)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (*(m)->mp_file_recovered_func)((m)->mp_daemon_cookie, n, e)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (*(m)->mp_log_func_v3)((m)->mp_daemon_cookie, (t), \
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Module function prototypes.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar#endif /* _NDMP_COMMON_H */