2010-05-20 09:48:30 +04:00
/*
ctdb database library : old client interface
2006-11-18 02:41:20 +03:00
Copyright ( C ) Andrew Tridgell 2006
2007-05-31 07:50:53 +04:00
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
2007-07-10 09:29:31 +04:00
the Free Software Foundation ; either version 3 of the License , or
2007-05-31 07:50:53 +04:00
( at your option ) any later version .
2010-05-20 09:48:30 +04:00
2007-05-31 07:50:53 +04:00
This program is distributed in the hope that it will be useful ,
2006-11-18 02:41:20 +03:00
but WITHOUT ANY WARRANTY ; without even the implied warranty of
2007-05-31 07:50:53 +04:00
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
2010-05-20 09:48:30 +04:00
2007-05-31 07:50:53 +04:00
You should have received a copy of the GNU General Public License
2007-07-10 09:29:31 +04:00
along with this program ; if not , see < http : //www.gnu.org/licenses/>.
2006-11-18 02:41:20 +03:00
*/
2010-05-20 09:48:30 +04:00
# ifndef _CTDB_CLIENT_H
# define _CTDB_CLIENT_H
# include <ctdb_protocol.h>
2009-12-11 16:19:55 +03:00
2007-08-23 13:27:09 +04:00
enum control_state { CTDB_CONTROL_WAIT , CTDB_CONTROL_DONE , CTDB_CONTROL_ERROR , CTDB_CONTROL_TIMEOUT } ;
2007-08-24 04:42:06 +04:00
struct ctdb_client_control_state {
struct ctdb_context * ctdb ;
uint32_t reqid ;
2007-08-23 13:27:09 +04:00
int32_t status ;
TDB_DATA outdata ;
2007-08-24 04:42:06 +04:00
enum control_state state ;
2007-08-23 13:27:09 +04:00
char * errormsg ;
2007-08-24 04:42:06 +04:00
struct ctdb_req_control * c ;
/* if we have a callback registered for the completion (or failure) of
this control
if a callback is used , it MUST talloc_free the cb_data passed to it
*/
struct {
void ( * fn ) ( struct ctdb_client_control_state * ) ;
2007-09-26 08:25:32 +04:00
void * private_data ;
2010-05-20 09:48:30 +04:00
} async ;
2007-08-23 13:27:09 +04:00
} ;
2009-10-23 08:24:51 +04:00
struct ctdb_client_notify_register {
uint64_t srvid ;
uint32_t len ;
uint8_t notify_data [ 1 ] ;
} ;
struct ctdb_client_notify_deregister {
uint64_t srvid ;
} ;
2007-08-23 13:27:09 +04:00
2006-11-18 06:33:05 +03:00
struct event_context ;
2006-11-18 02:41:20 +03:00
/*
initialise ctdb subsystem
*/
2006-11-18 06:33:05 +03:00
struct ctdb_context * ctdb_init ( struct event_context * ev ) ;
2006-11-18 02:41:20 +03:00
2006-11-27 13:38:13 +03:00
/*
choose the transport
*/
int ctdb_set_transport ( struct ctdb_context * ctdb , const char * transport ) ;
2007-04-18 18:36:22 +04:00
/*
set the directory for the local databases
*/
2007-04-19 03:14:25 +04:00
int ctdb_set_tdb_dir ( struct ctdb_context * ctdb , const char * dir ) ;
2007-09-21 06:24:02 +04:00
int ctdb_set_tdb_dir_persistent ( struct ctdb_context * ctdb , const char * dir ) ;
2009-11-23 16:38:03 +03:00
int ctdb_set_tdb_dir_state ( struct ctdb_context * ctdb , const char * dir ) ;
2007-04-18 18:36:22 +04:00
2006-12-01 07:45:24 +03:00
/*
set some flags
*/
void ctdb_set_flags ( struct ctdb_context * ctdb , unsigned flags ) ;
2007-01-23 03:38:45 +03:00
/*
set max acess count before a dmaster migration
*/
void ctdb_set_max_lacount ( struct ctdb_context * ctdb , unsigned count ) ;
2006-11-18 03:21:40 +03:00
/*
tell ctdb what address to listen on , in transport specific format
*/
int ctdb_set_address ( struct ctdb_context * ctdb , const char * address ) ;
2007-04-26 16:27:49 +04:00
int ctdb_set_socketname ( struct ctdb_context * ctdb , const char * socketname ) ;
2006-11-18 02:41:20 +03:00
/*
tell ctdb what nodes are available . This takes a filename , which will contain
1 node address per line , in a transport specific format
*/
int ctdb_set_nlist ( struct ctdb_context * ctdb , const char * nlist ) ;
2007-11-26 02:52:55 +03:00
/*
Check that a specific ip address exists in the node list and returns
the id for the node or - 1
*/
int ctdb_ip_to_nodeid ( struct ctdb_context * ctdb , const char * nodeip ) ;
2006-11-18 03:21:40 +03:00
/*
start the ctdb protocol
*/
int ctdb_start ( struct ctdb_context * ctdb ) ;
2009-10-30 11:39:11 +03:00
int ctdb_start_daemon ( struct ctdb_context * ctdb , bool do_fork , bool use_syslog ) ;
2006-11-18 02:41:20 +03:00
2007-04-03 13:41:00 +04:00
/*
attach to a ctdb database
*/
2008-06-04 04:46:20 +04:00
struct ctdb_db_context * ctdb_attach ( struct ctdb_context * ctdb , const char * name , bool persistent , uint32_t tdb_flags ) ;
2007-04-03 13:41:00 +04:00
2007-04-04 09:02:49 +04:00
/*
find an attached ctdb_db handle given a name
*/
struct ctdb_db_context * ctdb_db_handle ( struct ctdb_context * ctdb , const char * name ) ;
2006-11-18 02:41:20 +03:00
/*
error string for last ctdb error
*/
const char * ctdb_errstr ( struct ctdb_context * ) ;
/* a ctdb call function */
2007-01-25 07:19:16 +03:00
typedef int ( * ctdb_fn_t ) ( struct ctdb_call_info * ) ;
2006-11-18 02:41:20 +03:00
/*
setup a ctdb call function
*/
2007-04-30 17:31:40 +04:00
int ctdb_set_call ( struct ctdb_db_context * ctdb_db , ctdb_fn_t fn , uint32_t id ) ;
2006-11-18 02:41:20 +03:00
/*
make a ctdb call . The associated ctdb call function will be called on the DMASTER
for the given record
*/
2007-04-03 13:41:00 +04:00
int ctdb_call ( struct ctdb_db_context * ctdb_db , struct ctdb_call * call ) ;
2006-11-27 13:38:13 +03:00
2006-12-01 07:45:24 +03:00
/*
2007-04-18 06:39:03 +04:00
initiate an ordered ctdb cluster shutdown
this function will never return
2006-12-01 07:45:24 +03:00
*/
2007-04-18 06:39:03 +04:00
void ctdb_shutdown ( struct ctdb_context * ctdb ) ;
2006-12-01 07:45:24 +03:00
2007-09-04 04:18:44 +04:00
/* return pnn of this node */
uint32_t ctdb_get_pnn ( struct ctdb_context * ctdb ) ;
2007-01-23 03:38:45 +03:00
2007-02-09 04:45:58 +03:00
/*
return the number of nodes
*/
uint32_t ctdb_get_num_nodes ( struct ctdb_context * ctdb ) ;
2007-02-09 01:42:04 +03:00
/* setup a handler for ctdb messages */
2010-06-02 04:00:58 +04:00
typedef void ( * ctdb_msg_fn_t ) ( struct ctdb_context * , uint64_t srvid ,
2007-02-09 01:42:04 +03:00
TDB_DATA data , void * ) ;
2010-06-02 03:51:47 +04:00
int ctdb_client_set_message_handler ( struct ctdb_context * ctdb , uint64_t srvid ,
2010-06-02 04:00:58 +04:00
ctdb_msg_fn_t handler ,
2007-04-11 22:12:15 +04:00
void * private_data ) ;
2007-02-09 01:42:04 +03:00
2007-04-09 05:51:27 +04:00
int ctdb_call ( struct ctdb_db_context * ctdb_db , struct ctdb_call * call ) ;
2008-01-08 13:28:42 +03:00
struct ctdb_client_call_state * ctdb_call_send ( struct ctdb_db_context * ctdb_db , struct ctdb_call * call ) ;
2007-04-19 05:28:01 +04:00
int ctdb_call_recv ( struct ctdb_client_call_state * state , struct ctdb_call * call ) ;
2007-04-09 05:51:27 +04:00
2007-02-09 01:42:04 +03:00
/* send a ctdb message */
2010-06-02 03:45:21 +04:00
int ctdb_client_send_message ( struct ctdb_context * ctdb , uint32_t pnn ,
2007-04-27 18:31:45 +04:00
uint64_t srvid , TDB_DATA data ) ;
2007-02-09 01:42:04 +03:00
2007-04-04 15:15:56 +04:00
2010-05-20 09:48:30 +04:00
/*
2007-04-17 05:34:45 +04:00
Fetch a ctdb record from a remote node
. Underneath this will force the
2010-05-20 09:48:30 +04:00
dmaster for the record to be moved to the local node .
2007-04-04 15:15:56 +04:00
*/
2010-05-20 09:48:30 +04:00
struct ctdb_record_handle * ctdb_fetch_lock ( struct ctdb_db_context * ctdb_db , TALLOC_CTX * mem_ctx ,
2007-04-17 08:52:51 +04:00
TDB_DATA key , TDB_DATA * data ) ;
int ctdb_record_store ( struct ctdb_record_handle * h , TDB_DATA data ) ;
2007-04-04 15:15:56 +04:00
2010-05-20 09:48:30 +04:00
int ctdb_fetch ( struct ctdb_db_context * ctdb_db , TALLOC_CTX * mem_ctx ,
2007-08-15 03:03:58 +04:00
TDB_DATA key , TDB_DATA * data ) ;
2010-05-20 09:48:30 +04:00
int ctdb_register_message_handler ( struct ctdb_context * ctdb ,
2007-04-11 07:43:15 +04:00
TALLOC_CTX * mem_ctx ,
2007-04-27 18:31:45 +04:00
uint64_t srvid ,
2010-06-02 04:00:58 +04:00
ctdb_msg_fn_t handler ,
2007-04-11 22:12:15 +04:00
void * private_data ) ;
2007-04-04 15:15:56 +04:00
2007-04-12 09:46:50 +04:00
struct ctdb_db_context * find_ctdb_db ( struct ctdb_context * ctdb , uint32_t id ) ;
2007-04-17 05:34:45 +04:00
2007-04-26 16:27:49 +04:00
struct ctdb_context * ctdb_cmdline_client ( struct event_context * ev ) ;
2007-04-20 14:07:47 +04:00
2007-05-29 06:16:59 +04:00
struct ctdb_statistics ;
int ctdb_ctrl_statistics ( struct ctdb_context * ctdb , uint32_t destnode , struct ctdb_statistics * status ) ;
2007-04-20 14:07:47 +04:00
2007-05-17 04:45:31 +04:00
int ctdb_ctrl_shutdown ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode ) ;
2007-04-27 14:56:10 +04:00
struct ctdb_vnn_map ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_getvnnmap ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2007-05-04 03:45:53 +04:00
TALLOC_CTX * mem_ctx , struct ctdb_vnn_map * * vnnmap ) ;
2007-05-04 09:21:40 +04:00
int ctdb_ctrl_setvnnmap ( struct ctdb_context * ctdb ,
2010-05-20 09:48:30 +04:00
struct timeval timeout , uint32_t destnode ,
2007-05-04 09:21:40 +04:00
TALLOC_CTX * mem_ctx , struct ctdb_vnn_map * vnnmap ) ;
2007-04-28 14:40:26 +04:00
/* table that contains a list of all dbids on a node
*/
struct ctdb_dbid_map {
uint32_t num ;
2007-09-21 06:24:02 +04:00
struct ctdb_dbid {
uint32_t dbid ;
bool persistent ;
} dbs [ 1 ] ;
2007-04-28 14:40:26 +04:00
} ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_getdbmap ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2007-05-04 09:21:40 +04:00
TALLOC_CTX * mem_ctx , struct ctdb_dbid_map * * dbmap ) ;
2007-04-27 14:56:10 +04:00
2007-04-28 14:40:26 +04:00
2007-06-04 07:26:07 +04:00
struct ctdb_node_map ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_getnodemap ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2007-05-03 07:30:38 +04:00
TALLOC_CTX * mem_ctx , struct ctdb_node_map * * nodemap ) ;
2007-04-28 14:40:26 +04:00
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_getnodemapv4 ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2008-10-14 17:24:44 +04:00
TALLOC_CTX * mem_ctx , struct ctdb_node_map * * nodemap ) ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_reload_nodes_file ( struct ctdb_context * ctdb ,
2008-02-19 06:44:48 +03:00
struct timeval timeout , uint32_t destnode ) ;
2007-04-28 23:47:13 +04:00
struct ctdb_key_list {
2007-04-29 18:58:27 +04:00
uint32_t dbid ;
2007-04-28 23:47:13 +04:00
uint32_t num ;
TDB_DATA * keys ;
struct ctdb_ltdb_header * headers ;
TDB_DATA * data ;
} ;
2008-01-05 01:36:53 +03:00
int ctdb_ctrl_pulldb (
struct ctdb_context * ctdb , uint32_t destnode , uint32_t dbid ,
uint32_t lmaster , TALLOC_CTX * mem_ctx ,
struct timeval timeout , TDB_DATA * outdata ) ;
struct ctdb_client_control_state * ctdb_ctrl_pulldb_send (
struct ctdb_context * ctdb , uint32_t destnode , uint32_t dbid ,
uint32_t lmaster , TALLOC_CTX * mem_ctx , struct timeval timeout ) ;
int ctdb_ctrl_pulldb_recv (
struct ctdb_context * ctdb ,
TALLOC_CTX * mem_ctx , struct ctdb_client_control_state * state ,
TDB_DATA * outdata ) ;
int ctdb_ctrl_pushdb (
struct ctdb_context * ctdb , uint32_t destnode , uint32_t dbid ,
TALLOC_CTX * mem_ctx ,
struct timeval timeout , TDB_DATA indata ) ;
struct ctdb_client_control_state * ctdb_ctrl_pushdb_send (
struct ctdb_context * ctdb , uint32_t destnode , uint32_t dbid ,
TALLOC_CTX * mem_ctx , struct timeval timeout ,
TDB_DATA indata ) ;
int ctdb_ctrl_pushdb_recv (
struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx ,
struct ctdb_client_control_state * state ) ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_copydb ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t sourcenode ,
uint32_t destnode , uint32_t dbid , uint32_t lmaster ,
2007-05-04 09:21:40 +04:00
TALLOC_CTX * mem_ctx ) ;
2007-04-28 23:47:13 +04:00
2007-05-04 09:21:40 +04:00
int ctdb_ctrl_getdbpath ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t dbid , TALLOC_CTX * mem_ctx , const char * * path ) ;
int ctdb_ctrl_getdbname ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t dbid , TALLOC_CTX * mem_ctx , const char * * name ) ;
2009-12-02 14:51:37 +03:00
int ctdb_ctrl_getdbhealth ( struct ctdb_context * ctdb ,
struct timeval timeout ,
uint32_t destnode ,
uint32_t dbid , TALLOC_CTX * mem_ctx ,
const char * * reason ) ;
2007-09-21 06:24:02 +04:00
int ctdb_ctrl_createdb ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , TALLOC_CTX * mem_ctx , const char * name , bool persistent ) ;
2007-04-23 18:06:48 +04:00
2007-04-29 18:58:27 +04:00
int ctdb_ctrl_process_exists ( struct ctdb_context * ctdb , uint32_t destnode , pid_t pid ) ;
2007-04-26 16:27:49 +04:00
2007-04-29 18:58:27 +04:00
int ctdb_ctrl_ping ( struct ctdb_context * ctdb , uint32_t destnode ) ;
2007-04-26 21:27:07 +04:00
2007-04-29 18:58:27 +04:00
int ctdb_ctrl_get_config ( struct ctdb_context * ctdb ) ;
2007-04-26 21:27:07 +04:00
2008-02-05 02:26:23 +03:00
int ctdb_ctrl_get_debuglevel ( struct ctdb_context * ctdb , uint32_t destnode , int32_t * level ) ;
int ctdb_ctrl_set_debuglevel ( struct ctdb_context * ctdb , uint32_t destnode , int32_t level ) ;
2007-04-27 17:14:36 +04:00
2007-04-29 12:34:11 +04:00
/*
change dmaster for all keys in the database to the new value
*/
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_setdmaster ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2007-05-04 09:21:40 +04:00
TALLOC_CTX * mem_ctx , uint32_t dbid , uint32_t dmaster ) ;
2007-04-29 12:34:11 +04:00
2007-05-02 15:00:02 +04:00
/*
write a record on a specific db ( this implicitely updates dmaster of the record to locally be the vnn of the node where the control is executed on )
*/
int ctdb_ctrl_write_record ( struct ctdb_context * ctdb , uint32_t destnode , TALLOC_CTX * mem_ctx , uint32_t dbid , TDB_DATA key , TDB_DATA data ) ;
2007-04-29 16:51:56 +04:00
# define CTDB_RECOVERY_NORMAL 0
# define CTDB_RECOVERY_ACTIVE 1
2007-05-12 08:34:21 +04:00
2007-04-29 16:51:56 +04:00
/*
get the recovery mode of a remote node
*/
2007-08-23 07:00:10 +04:00
int ctdb_ctrl_getrecmode ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct timeval timeout , uint32_t destnode , uint32_t * recmode ) ;
struct ctdb_client_control_state * ctdb_ctrl_getrecmode_send ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct timeval timeout , uint32_t destnode ) ;
int ctdb_ctrl_getrecmode_recv ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct ctdb_client_control_state * state , uint32_t * recmode ) ;
2007-04-29 16:51:56 +04:00
/*
set the recovery mode of a remote node
*/
2007-05-04 09:21:40 +04:00
int ctdb_ctrl_setrecmode ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t recmode ) ;
2007-05-21 03:24:34 +04:00
/*
get the monitoring mode of a remote node
*/
int ctdb_ctrl_getmonmode ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t * monmode ) ;
2007-04-29 16:51:56 +04:00
2008-03-25 00:27:38 +03:00
/*
set the monitoring mode of a remote node to active
*/
int ctdb_ctrl_enable_monmode ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode ) ;
/*
set the monitoring mode of a remote node to disabled
*/
int ctdb_ctrl_disable_monmode ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode ) ;
2007-05-06 23:02:48 +04:00
/*
get the recovery master of a remote node
*/
2007-08-23 13:27:09 +04:00
int ctdb_ctrl_getrecmaster ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct timeval timeout , uint32_t destnode , uint32_t * recmaster ) ;
2007-08-24 04:42:06 +04:00
struct ctdb_client_control_state * ctdb_ctrl_getrecmaster_send ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct timeval timeout , uint32_t destnode ) ;
2007-08-23 13:27:09 +04:00
int ctdb_ctrl_getrecmaster_recv ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct ctdb_client_control_state * state , uint32_t * recmaster ) ;
2007-05-06 23:02:48 +04:00
/*
set the recovery master of a remote node
*/
int ctdb_ctrl_setrecmaster ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t recmaster ) ;
2010-05-20 09:48:30 +04:00
uint32_t * ctdb_get_connected_nodes ( struct ctdb_context * ctdb ,
struct timeval timeout ,
2007-05-04 03:01:01 +04:00
TALLOC_CTX * mem_ctx ,
2007-04-28 19:42:40 +04:00
uint32_t * num_nodes ) ;
2007-05-29 06:16:59 +04:00
int ctdb_statistics_reset ( struct ctdb_context * ctdb , uint32_t destnode ) ;
2007-04-28 21:13:36 +04:00
2008-01-16 14:03:01 +03:00
int ctdb_set_logfile ( struct ctdb_context * ctdb , const char * logfile , bool use_syslog ) ;
2007-04-30 00:42:23 +04:00
2007-05-04 06:18:39 +04:00
typedef int ( * ctdb_traverse_func ) ( struct ctdb_context * , TDB_DATA , TDB_DATA , void * ) ;
int ctdb_traverse ( struct ctdb_db_context * ctdb_db , ctdb_traverse_func fn , void * private_data ) ;
2009-12-04 17:23:56 +03:00
int ctdb_dumpdb_record ( struct ctdb_context * ctdb , TDB_DATA key , TDB_DATA data , void * p ) ;
2007-05-04 06:18:39 +04:00
int ctdb_dump_db ( struct ctdb_db_context * ctdb_db , FILE * f ) ;
2007-05-03 11:12:23 +04:00
2007-05-05 22:31:22 +04:00
/*
get the pid of a ctdb daemon
*/
int ctdb_ctrl_getpid ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t * pid ) ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_freeze ( struct ctdb_context * ctdb , struct timeval timeout ,
2007-08-27 04:31:22 +04:00
uint32_t destnode ) ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_freeze_priority ( struct ctdb_context * ctdb , struct timeval timeout ,
2009-10-12 02:22:17 +04:00
uint32_t destnode , uint32_t priority ) ;
2007-08-27 04:31:22 +04:00
struct ctdb_client_control_state *
2010-05-20 09:48:30 +04:00
ctdb_ctrl_freeze_send ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx ,
2009-10-12 02:22:17 +04:00
struct timeval timeout , uint32_t destnode ,
uint32_t priority ) ;
2007-08-27 04:31:22 +04:00
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_freeze_recv ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx ,
2007-08-27 04:31:22 +04:00
struct ctdb_client_control_state * state ) ;
2009-10-12 02:22:17 +04:00
int ctdb_ctrl_thaw_priority ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t priority ) ;
2007-05-12 09:15:27 +04:00
int ctdb_ctrl_thaw ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode ) ;
2007-09-04 04:38:48 +04:00
int ctdb_ctrl_getpnn ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode ) ;
2007-05-23 08:35:19 +04:00
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_get_tunable ( struct ctdb_context * ctdb ,
struct timeval timeout ,
2007-06-04 13:53:19 +04:00
uint32_t destnode ,
const char * name , uint32_t * value ) ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_set_tunable ( struct ctdb_context * ctdb ,
struct timeval timeout ,
2007-06-04 13:53:19 +04:00
uint32_t destnode ,
const char * name , uint32_t value ) ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_list_tunables ( struct ctdb_context * ctdb ,
struct timeval timeout ,
2007-06-04 13:53:19 +04:00
uint32_t destnode ,
TALLOC_CTX * mem_ctx ,
const char * * * list , uint32_t * count ) ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_modflags ( struct ctdb_context * ctdb ,
struct timeval timeout ,
uint32_t destnode ,
2007-06-07 09:18:55 +04:00
uint32_t set , uint32_t clear ) ;
2007-06-04 13:53:19 +04:00
2007-08-24 09:53:41 +04:00
enum ctdb_server_id_type { SERVER_TYPE_SAMBA = 1 } ;
struct ctdb_server_id {
enum ctdb_server_id_type type ;
2007-09-04 04:21:51 +04:00
uint32_t pnn ;
2007-08-24 09:53:41 +04:00
uint32_t server_id ;
} ;
2007-08-26 04:57:02 +04:00
struct ctdb_server_id_list {
uint32_t num ;
struct ctdb_server_id server_ids [ 1 ] ;
} ;
2007-08-24 09:53:41 +04:00
int ctdb_ctrl_register_server_id ( struct ctdb_context * ctdb ,
struct timeval timeout ,
struct ctdb_server_id * id ) ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_unregister_server_id ( struct ctdb_context * ctdb ,
struct timeval timeout ,
2007-08-24 09:53:41 +04:00
struct ctdb_server_id * id ) ;
int ctdb_ctrl_check_server_id ( struct ctdb_context * ctdb ,
2010-05-20 09:48:30 +04:00
struct timeval timeout , uint32_t destnode ,
2007-08-24 09:53:41 +04:00
struct ctdb_server_id * id , uint32_t * status ) ;
2007-08-26 04:57:02 +04:00
int ctdb_ctrl_get_server_id_list ( struct ctdb_context * ctdb ,
TALLOC_CTX * mem_ctx ,
2010-05-20 09:48:30 +04:00
struct timeval timeout , uint32_t destnode ,
2007-08-26 04:57:02 +04:00
struct ctdb_server_id_list * * svid_list ) ;
2007-08-24 09:53:41 +04:00
2008-01-17 03:33:23 +03:00
struct ctdb_uptime {
struct timeval current_time ;
struct timeval ctdbd_start_time ;
2008-07-02 07:55:59 +04:00
struct timeval last_recovery_started ;
struct timeval last_recovery_finished ;
2008-01-17 03:33:23 +03:00
} ;
2009-01-13 08:17:20 +03:00
/*
definitions for different socket structures
*/
typedef struct sockaddr_in ctdb_addr_in ;
typedef struct sockaddr_in6 ctdb_addr_in6 ;
typedef union {
struct sockaddr sa ;
ctdb_addr_in ip ;
ctdb_addr_in6 ip6 ;
} ctdb_sock_addr ;
/*
struct for tcp_client control
this is an ipv4 only version of this structure used by samba
2010-05-20 09:48:30 +04:00
samba will later be migrated over to use the
2009-01-13 08:17:20 +03:00
ctdb_control_tcp_addr structure instead
*/
struct ctdb_control_tcp {
struct sockaddr_in src ; // samba uses this
struct sockaddr_in dest ; // samba uses this
} ;
/* new style structure */
struct ctdb_control_tcp_addr {
ctdb_sock_addr src ;
ctdb_sock_addr dest ;
} ;
2007-08-15 03:03:58 +04:00
int ctdb_socket_connect ( struct ctdb_context * ctdb ) ;
2008-01-17 03:33:23 +03:00
/*
get the uptime of a remote node
*/
int ctdb_ctrl_uptime ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct timeval timeout , uint32_t destnode , struct ctdb_uptime * * uptime ) ;
struct ctdb_client_control_state * ctdb_ctrl_uptime_send ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct timeval timeout , uint32_t destnode ) ;
int ctdb_ctrl_uptime_recv ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct ctdb_client_control_state * state , struct ctdb_uptime * * uptime ) ;
2008-01-29 05:59:28 +03:00
int ctdb_ctrl_end_recovery ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode ) ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_getreclock ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2008-02-29 02:03:39 +03:00
TALLOC_CTX * mem_ctx , const char * * reclock ) ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_setreclock ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2009-06-25 08:25:18 +04:00
const char * reclock ) ;
2008-02-29 02:03:39 +03:00
2008-11-19 06:43:46 +03:00
uint32_t * list_of_connected_nodes ( struct ctdb_context * ctdb ,
struct ctdb_node_map * node_map ,
TALLOC_CTX * mem_ctx ,
bool include_self ) ;
2008-01-29 05:59:28 +03:00
uint32_t * list_of_active_nodes ( struct ctdb_context * ctdb ,
struct ctdb_node_map * node_map ,
TALLOC_CTX * mem_ctx ,
bool include_self ) ;
uint32_t * list_of_vnnmap_nodes ( struct ctdb_context * ctdb ,
struct ctdb_vnn_map * vnn_map ,
TALLOC_CTX * mem_ctx ,
bool include_self ) ;
2009-10-06 03:52:31 +04:00
uint32_t * list_of_active_nodes_except_pnn ( struct ctdb_context * ctdb ,
struct ctdb_node_map * node_map ,
TALLOC_CTX * mem_ctx ,
uint32_t pnn ) ;
2008-01-29 05:59:28 +03:00
2008-02-29 04:37:42 +03:00
int ctdb_read_pnn_lock ( int fd , int32_t pnn ) ;
2008-05-06 04:02:27 +04:00
/*
get capabilities of a remote node
*/
int ctdb_ctrl_getcapabilities ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t * capabilities ) ;
struct ctdb_client_control_state * ctdb_ctrl_getcapabilities_send ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct timeval timeout , uint32_t destnode ) ;
int ctdb_ctrl_getcapabilities_recv ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct ctdb_client_control_state * state , uint32_t * capabilities ) ;
2009-12-03 02:25:16 +03:00
int32_t ctdb_ctrl_transaction_active ( struct ctdb_context * ctdb ,
uint32_t destnode ,
uint32_t db_id ) ;
2010-05-20 09:48:30 +04:00
struct ctdb_marshall_buffer * ctdb_marshall_add ( TALLOC_CTX * mem_ctx ,
2008-07-30 13:58:27 +04:00
struct ctdb_marshall_buffer * m ,
uint64_t db_id ,
uint32_t reqid ,
TDB_DATA key ,
struct ctdb_ltdb_header * header ,
TDB_DATA data ) ;
TDB_DATA ctdb_marshall_finish ( struct ctdb_marshall_buffer * m ) ;
struct ctdb_transaction_handle * ctdb_transaction_start ( struct ctdb_db_context * ctdb_db ,
TALLOC_CTX * mem_ctx ) ;
2010-05-20 09:48:30 +04:00
int ctdb_transaction_fetch ( struct ctdb_transaction_handle * h ,
TALLOC_CTX * mem_ctx ,
2008-07-30 13:58:27 +04:00
TDB_DATA key , TDB_DATA * data ) ;
2010-05-20 09:48:30 +04:00
int ctdb_transaction_store ( struct ctdb_transaction_handle * h ,
2008-07-30 13:58:27 +04:00
TDB_DATA key , TDB_DATA data ) ;
int ctdb_transaction_commit ( struct ctdb_transaction_handle * h ) ;
2008-09-09 07:44:46 +04:00
int ctdb_ctrl_recd_ping ( struct ctdb_context * ctdb ) ;
2009-03-23 04:37:30 +03:00
int switch_from_server_to_client ( struct ctdb_context * ctdb ) ;
2010-05-20 09:48:30 +04:00
int ctdb_ctrl_getscriptstatus ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2009-12-07 18:20:55 +03:00
TALLOC_CTX * mem_ctx , enum ctdb_eventscript_call type ,
struct ctdb_scripts_wire * * script_status ) ;
2009-03-23 11:07:45 +03:00
2009-07-01 03:17:13 +04:00
struct debug_levels {
int32_t level ;
const char * description ;
} ;
extern struct debug_levels debug_levels [ ] ;
const char * get_debug_by_level ( int32_t level ) ;
int32_t get_debug_by_desc ( const char * desc ) ;
2009-07-09 06:22:46 +04:00
int ctdb_ctrl_stop_node ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode ) ;
int ctdb_ctrl_continue_node ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode ) ;
2009-07-01 03:17:13 +04:00
2009-07-28 03:58:11 +04:00
int ctdb_ctrl_setnatgwstate ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t natgwstate ) ;
2009-07-28 07:45:13 +04:00
int ctdb_ctrl_setlmasterrole ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t lmasterrole ) ;
int ctdb_ctrl_setrecmasterrole ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t recmasterrole ) ;
2009-07-28 03:58:11 +04:00
2009-08-13 07:04:08 +04:00
int ctdb_ctrl_enablescript ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , const char * script ) ;
int ctdb_ctrl_disablescript ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , const char * script ) ;
2009-09-03 20:20:39 +04:00
struct ctdb_ban_time {
uint32_t pnn ;
uint32_t time ;
} ;
int ctdb_ctrl_set_ban ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , struct ctdb_ban_time * bantime ) ;
int ctdb_ctrl_get_ban ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , TALLOC_CTX * mem_ctx , struct ctdb_ban_time * * bantime ) ;
2009-10-10 07:26:09 +04:00
struct ctdb_db_priority {
uint32_t db_id ;
uint32_t priority ;
} ;
int ctdb_ctrl_set_db_priority ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , struct ctdb_db_priority * db_prio ) ;
2009-10-10 08:04:18 +04:00
int ctdb_ctrl_get_db_priority ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t db_id , uint32_t * priority ) ;
2009-09-03 20:20:39 +04:00
2010-05-20 09:48:30 +04:00
# endif /* _CTDB_CLIENT_H */