2010-05-20 15:18:30 +09:30
/*
ctdb database library : old client interface
2006-11-18 10:41:20 +11:00
Copyright ( C ) Andrew Tridgell 2006
2007-05-31 13:50:53 +10: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 15:29:31 +10:00
the Free Software Foundation ; either version 3 of the License , or
2007-05-31 13:50:53 +10:00
( at your option ) any later version .
2010-05-20 15:18:30 +09:30
2007-05-31 13:50:53 +10:00
This program is distributed in the hope that it will be useful ,
2006-11-18 10:41:20 +11:00
but WITHOUT ANY WARRANTY ; without even the implied warranty of
2007-05-31 13:50:53 +10:00
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
2010-05-20 15:18:30 +09:30
2007-05-31 13:50:53 +10:00
You should have received a copy of the GNU General Public License
2007-07-10 15:29:31 +10:00
along with this program ; if not , see < http : //www.gnu.org/licenses/>.
2006-11-18 10:41:20 +11:00
*/
2010-05-20 15:18:30 +09:30
# ifndef _CTDB_CLIENT_H
# define _CTDB_CLIENT_H
# include <ctdb_protocol.h>
2009-12-11 14:19:55 +01:00
2007-08-23 19:27:09 +10:00
enum control_state { CTDB_CONTROL_WAIT , CTDB_CONTROL_DONE , CTDB_CONTROL_ERROR , CTDB_CONTROL_TIMEOUT } ;
2007-08-24 10:42:06 +10:00
struct ctdb_client_control_state {
struct ctdb_context * ctdb ;
uint32_t reqid ;
2007-08-23 19:27:09 +10:00
int32_t status ;
TDB_DATA outdata ;
2007-08-24 10:42:06 +10:00
enum control_state state ;
2007-08-23 19:27:09 +10:00
char * errormsg ;
2007-08-24 10:42:06 +10: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 14:25:32 +10:00
void * private_data ;
2010-05-20 15:18:30 +09:30
} async ;
2007-08-23 19:27:09 +10:00
} ;
2009-10-23 15:24:51 +11: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 19:27:09 +10:00
2010-08-18 09:16:31 +09:30
struct tevent_context ;
2006-11-18 10:41:20 +11:00
/*
initialise ctdb subsystem
*/
2010-08-18 09:16:31 +09:30
struct ctdb_context * ctdb_init ( struct tevent_context * ev ) ;
2006-11-18 10:41:20 +11:00
2006-11-27 21:38:13 +11:00
/*
choose the transport
*/
int ctdb_set_transport ( struct ctdb_context * ctdb , const char * transport ) ;
2007-04-18 16:36:22 +02:00
/*
set the directory for the local databases
*/
2007-04-19 09:14:25 +10:00
int ctdb_set_tdb_dir ( struct ctdb_context * ctdb , const char * dir ) ;
2007-09-21 12:24:02 +10:00
int ctdb_set_tdb_dir_persistent ( struct ctdb_context * ctdb , const char * dir ) ;
2009-11-23 14:38:03 +01:00
int ctdb_set_tdb_dir_state ( struct ctdb_context * ctdb , const char * dir ) ;
2007-04-18 16:36:22 +02:00
2006-12-01 15:45:24 +11:00
/*
set some flags
*/
void ctdb_set_flags ( struct ctdb_context * ctdb , unsigned flags ) ;
2006-11-18 11:21:40 +11: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 14:27:49 +02:00
int ctdb_set_socketname ( struct ctdb_context * ctdb , const char * socketname ) ;
2010-06-02 10:25:31 +10:00
const char * ctdb_get_socketname ( struct ctdb_context * ctdb ) ;
2007-04-26 14:27:49 +02:00
2006-11-18 10:41:20 +11: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 10:52:55 +11: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 11:21:40 +11:00
/*
start the ctdb protocol
*/
int ctdb_start ( struct ctdb_context * ctdb ) ;
2010-11-10 12:59:25 +11:00
int ctdb_start_daemon ( struct ctdb_context * ctdb , bool do_fork , bool use_syslog , const char * public_address_list ) ;
2006-11-18 10:41:20 +11:00
2007-04-03 19:41:00 +10:00
/*
attach to a ctdb database
*/
2011-08-08 16:35:56 +02:00
struct ctdb_db_context * ctdb_attach ( struct ctdb_context * ctdb ,
struct timeval timeout ,
const char * name ,
bool persistent ,
uint32_t tdb_flags ) ;
2007-04-03 19:41:00 +10:00
2007-04-04 15:02:49 +10: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 10:41:20 +11:00
/*
error string for last ctdb error
*/
const char * ctdb_errstr ( struct ctdb_context * ) ;
/* a ctdb call function */
2007-01-25 15:19:16 +11:00
typedef int ( * ctdb_fn_t ) ( struct ctdb_call_info * ) ;
2006-11-18 10:41:20 +11:00
/*
setup a ctdb call function
*/
2007-04-30 15:31:40 +02:00
int ctdb_set_call ( struct ctdb_db_context * ctdb_db , ctdb_fn_t fn , uint32_t id ) ;
2006-11-18 10:41:20 +11:00
/*
make a ctdb call . The associated ctdb call function will be called on the DMASTER
for the given record
*/
2007-04-03 19:41:00 +10:00
int ctdb_call ( struct ctdb_db_context * ctdb_db , struct ctdb_call * call ) ;
2006-11-27 21:38:13 +11:00
2006-12-01 15:45:24 +11:00
/*
2007-04-18 12:39:03 +10:00
initiate an ordered ctdb cluster shutdown
this function will never return
2006-12-01 15:45:24 +11:00
*/
2007-04-18 12:39:03 +10:00
void ctdb_shutdown ( struct ctdb_context * ctdb ) ;
2006-12-01 15:45:24 +11:00
2007-09-04 10:18:44 +10:00
/* return pnn of this node */
uint32_t ctdb_get_pnn ( struct ctdb_context * ctdb ) ;
2007-01-23 11:38:45 +11:00
2007-02-09 12:45:58 +11:00
/*
return the number of nodes
*/
uint32_t ctdb_get_num_nodes ( struct ctdb_context * ctdb ) ;
2007-02-09 09:42:04 +11:00
/* setup a handler for ctdb messages */
2010-06-02 10:00:58 +10:00
typedef void ( * ctdb_msg_fn_t ) ( struct ctdb_context * , uint64_t srvid ,
2007-02-09 09:42:04 +11:00
TDB_DATA data , void * ) ;
2010-06-02 09:51:47 +10:00
int ctdb_client_set_message_handler ( struct ctdb_context * ctdb , uint64_t srvid ,
2010-06-02 10:00:58 +10:00
ctdb_msg_fn_t handler ,
2007-04-11 20:12:15 +02:00
void * private_data ) ;
2010-06-02 10:05:58 +10:00
int ctdb_client_remove_message_handler ( struct ctdb_context * ctdb ,
uint64_t srvid , void * private_data ) ;
2007-02-09 09:42:04 +11:00
2007-04-09 11:51:27 +10:00
int ctdb_call ( struct ctdb_db_context * ctdb_db , struct ctdb_call * call ) ;
2008-01-08 21:28:42 +11:00
struct ctdb_client_call_state * ctdb_call_send ( struct ctdb_db_context * ctdb_db , struct ctdb_call * call ) ;
2007-04-19 11:28:01 +10:00
int ctdb_call_recv ( struct ctdb_client_call_state * state , struct ctdb_call * call ) ;
2007-04-09 11:51:27 +10:00
2007-02-09 09:42:04 +11:00
/* send a ctdb message */
2010-06-02 09:45:21 +10:00
int ctdb_client_send_message ( struct ctdb_context * ctdb , uint32_t pnn ,
2007-04-28 00:31:45 +10:00
uint64_t srvid , TDB_DATA data ) ;
2007-02-09 09:42:04 +11:00
2007-04-04 21:15:56 +10:00
2010-05-20 15:18:30 +09:30
/*
2007-04-17 11:34:45 +10:00
Fetch a ctdb record from a remote node
. Underneath this will force the
2010-05-20 15:18:30 +09:30
dmaster for the record to be moved to the local node .
2007-04-04 21:15:56 +10:00
*/
2010-05-20 15:18:30 +09:30
struct ctdb_record_handle * ctdb_fetch_lock ( struct ctdb_db_context * ctdb_db , TALLOC_CTX * mem_ctx ,
2007-04-17 14:52:51 +10:00
TDB_DATA key , TDB_DATA * data ) ;
2011-07-20 15:37:37 +10:00
struct ctdb_record_handle * ctdb_fetch_readonly_lock ( struct ctdb_db_context * ctdb_db , TALLOC_CTX * mem_ctx , TDB_DATA key , TDB_DATA * data , int read_only ) ;
2007-04-17 14:52:51 +10:00
int ctdb_record_store ( struct ctdb_record_handle * h , TDB_DATA data ) ;
2007-04-04 21:15:56 +10:00
2010-05-20 15:18:30 +09:30
int ctdb_fetch ( struct ctdb_db_context * ctdb_db , TALLOC_CTX * mem_ctx ,
2007-08-15 09:03:58 +10:00
TDB_DATA key , TDB_DATA * data ) ;
2010-05-20 15:18:30 +09:30
int ctdb_register_message_handler ( struct ctdb_context * ctdb ,
2007-04-11 13:43:15 +10:00
TALLOC_CTX * mem_ctx ,
2007-04-28 00:31:45 +10:00
uint64_t srvid ,
2010-06-02 10:00:58 +10:00
ctdb_msg_fn_t handler ,
2007-04-11 20:12:15 +02:00
void * private_data ) ;
2007-04-04 21:15:56 +10:00
2007-04-12 15:46:50 +10:00
struct ctdb_db_context * find_ctdb_db ( struct ctdb_context * ctdb , uint32_t id ) ;
2007-04-17 11:34:45 +10:00
2011-08-08 14:09:46 +02:00
struct ctdb_context * ctdb_cmdline_client ( struct tevent_context * ev ,
struct timeval req_timeout ) ;
2007-04-20 20:07:47 +10:00
2007-05-29 12:16:59 +10:00
struct ctdb_statistics ;
int ctdb_ctrl_statistics ( struct ctdb_context * ctdb , uint32_t destnode , struct ctdb_statistics * status ) ;
2007-04-20 20:07:47 +10:00
2007-05-17 10:45:31 +10:00
int ctdb_ctrl_shutdown ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode ) ;
2007-04-27 20:56:10 +10:00
struct ctdb_vnn_map ;
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_getvnnmap ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2007-05-04 09:45:53 +10:00
TALLOC_CTX * mem_ctx , struct ctdb_vnn_map * * vnnmap ) ;
2007-05-04 15:21:40 +10:00
int ctdb_ctrl_setvnnmap ( struct ctdb_context * ctdb ,
2010-05-20 15:18:30 +09:30
struct timeval timeout , uint32_t destnode ,
2007-05-04 15:21:40 +10:00
TALLOC_CTX * mem_ctx , struct ctdb_vnn_map * vnnmap ) ;
2007-04-28 20:40:26 +10:00
/* table that contains a list of all dbids on a node
*/
struct ctdb_dbid_map {
uint32_t num ;
2007-09-21 12:24:02 +10:00
struct ctdb_dbid {
uint32_t dbid ;
2011-09-01 10:21:55 +10:00
# define CTDB_DB_FLAGS_PERSISTENT 0x01
2011-09-01 10:28:15 +10:00
# define CTDB_DB_FLAGS_READONLY 0x02
2011-09-01 10:21:55 +10:00
uint8_t flags ;
2007-09-21 12:24:02 +10:00
} dbs [ 1 ] ;
2007-04-28 20:40:26 +10:00
} ;
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_getdbmap ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2007-05-04 15:21:40 +10:00
TALLOC_CTX * mem_ctx , struct ctdb_dbid_map * * dbmap ) ;
2007-04-27 20:56:10 +10:00
2007-04-28 20:40:26 +10:00
2007-06-04 13:26:07 +10:00
struct ctdb_node_map ;
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_getnodemap ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2007-05-03 13:30:38 +10:00
TALLOC_CTX * mem_ctx , struct ctdb_node_map * * nodemap ) ;
2007-04-28 20:40:26 +10:00
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_getnodemapv4 ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2008-10-15 00:24:44 +11:00
TALLOC_CTX * mem_ctx , struct ctdb_node_map * * nodemap ) ;
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_reload_nodes_file ( struct ctdb_context * ctdb ,
2008-02-19 14:44:48 +11:00
struct timeval timeout , uint32_t destnode ) ;
2007-04-29 05:47:13 +10:00
struct ctdb_key_list {
2007-04-30 00:58:27 +10:00
uint32_t dbid ;
2007-04-29 05:47:13 +10:00
uint32_t num ;
TDB_DATA * keys ;
struct ctdb_ltdb_header * headers ;
TDB_DATA * data ;
} ;
2008-01-05 09:36:53 +11: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 15:18:30 +09:30
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 15:21:40 +10:00
TALLOC_CTX * mem_ctx ) ;
2007-04-29 05:47:13 +10:00
2007-05-04 15:21:40 +10: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 12:51:37 +01: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 12:24:02 +10: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-24 00:06:48 +10:00
2007-04-30 00:58:27 +10:00
int ctdb_ctrl_process_exists ( struct ctdb_context * ctdb , uint32_t destnode , pid_t pid ) ;
2007-04-26 14:27:49 +02:00
2007-04-30 00:58:27 +10:00
int ctdb_ctrl_ping ( struct ctdb_context * ctdb , uint32_t destnode ) ;
2007-04-26 19:27:07 +02:00
2007-04-30 00:58:27 +10:00
int ctdb_ctrl_get_config ( struct ctdb_context * ctdb ) ;
2007-04-26 19:27:07 +02:00
2008-02-05 10:26:23 +11: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 15:14:36 +02:00
2007-04-29 18:34:11 +10:00
/*
change dmaster for all keys in the database to the new value
*/
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_setdmaster ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2007-05-04 15:21:40 +10:00
TALLOC_CTX * mem_ctx , uint32_t dbid , uint32_t dmaster ) ;
2007-04-29 18:34:11 +10:00
2007-05-02 21:00:02 +10: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 22:51:56 +10:00
# define CTDB_RECOVERY_NORMAL 0
# define CTDB_RECOVERY_ACTIVE 1
2007-05-12 14:34:21 +10:00
2007-04-29 22:51:56 +10:00
/*
get the recovery mode of a remote node
*/
2007-08-23 13:00:10 +10: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 22:51:56 +10:00
/*
set the recovery mode of a remote node
*/
2007-05-04 15:21:40 +10:00
int ctdb_ctrl_setrecmode ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t recmode ) ;
2007-05-21 09:24:34 +10: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 22:51:56 +10:00
2008-03-25 08:27:38 +11: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-07 05:02:48 +10:00
/*
get the recovery master of a remote node
*/
2007-08-23 19:27:09 +10: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 10:42:06 +10: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 19:27:09 +10: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-07 05:02:48 +10: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 15:18:30 +09:30
uint32_t * ctdb_get_connected_nodes ( struct ctdb_context * ctdb ,
struct timeval timeout ,
2007-05-04 09:01:01 +10:00
TALLOC_CTX * mem_ctx ,
2007-04-28 17:42:40 +02:00
uint32_t * num_nodes ) ;
2007-05-29 12:16:59 +10:00
int ctdb_statistics_reset ( struct ctdb_context * ctdb , uint32_t destnode ) ;
2007-04-28 19:13:36 +02:00
2008-01-16 22:03:01 +11:00
int ctdb_set_logfile ( struct ctdb_context * ctdb , const char * logfile , bool use_syslog ) ;
2007-04-29 22:42:23 +02:00
2007-05-04 12:18:39 +10: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 15:23:56 +01:00
int ctdb_dumpdb_record ( struct ctdb_context * ctdb , TDB_DATA key , TDB_DATA data , void * p ) ;
2007-05-04 12:18:39 +10:00
int ctdb_dump_db ( struct ctdb_db_context * ctdb_db , FILE * f ) ;
2007-05-03 17:12:23 +10:00
2007-05-06 04:31:22 +10: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 15:18:30 +09:30
int ctdb_ctrl_freeze ( struct ctdb_context * ctdb , struct timeval timeout ,
2007-08-27 10:31:22 +10:00
uint32_t destnode ) ;
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_freeze_priority ( struct ctdb_context * ctdb , struct timeval timeout ,
2009-10-12 09:22:17 +11:00
uint32_t destnode , uint32_t priority ) ;
2007-08-27 10:31:22 +10:00
struct ctdb_client_control_state *
2010-05-20 15:18:30 +09:30
ctdb_ctrl_freeze_send ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx ,
2009-10-12 09:22:17 +11:00
struct timeval timeout , uint32_t destnode ,
uint32_t priority ) ;
2007-08-27 10:31:22 +10:00
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_freeze_recv ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx ,
2007-08-27 10:31:22 +10:00
struct ctdb_client_control_state * state ) ;
2009-10-12 09:22:17 +11:00
int ctdb_ctrl_thaw_priority ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t priority ) ;
2007-05-12 15:15:27 +10:00
int ctdb_ctrl_thaw ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode ) ;
2007-09-04 10:38:48 +10:00
int ctdb_ctrl_getpnn ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode ) ;
2007-05-23 14:35:19 +10:00
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_get_tunable ( struct ctdb_context * ctdb ,
struct timeval timeout ,
2007-06-04 19:53:19 +10:00
uint32_t destnode ,
const char * name , uint32_t * value ) ;
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_set_tunable ( struct ctdb_context * ctdb ,
struct timeval timeout ,
2007-06-04 19:53:19 +10:00
uint32_t destnode ,
const char * name , uint32_t value ) ;
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_list_tunables ( struct ctdb_context * ctdb ,
struct timeval timeout ,
2007-06-04 19:53:19 +10:00
uint32_t destnode ,
TALLOC_CTX * mem_ctx ,
const char * * * list , uint32_t * count ) ;
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_modflags ( struct ctdb_context * ctdb ,
struct timeval timeout ,
uint32_t destnode ,
2007-06-07 15:18:55 +10:00
uint32_t set , uint32_t clear ) ;
2007-06-04 19:53:19 +10:00
2010-09-13 15:01:47 +10:00
enum ctdb_server_id_type {
SERVER_TYPE_SAMBA = 1 ,
SERVER_TYPE_NFSD = 2 ,
SERVER_TYPE_ISCSID = 3
} ;
2007-08-24 15:53:41 +10:00
struct ctdb_server_id {
enum ctdb_server_id_type type ;
2007-09-04 10:21:51 +10:00
uint32_t pnn ;
2007-08-24 15:53:41 +10:00
uint32_t server_id ;
} ;
2007-08-26 10:57:02 +10:00
struct ctdb_server_id_list {
uint32_t num ;
struct ctdb_server_id server_ids [ 1 ] ;
} ;
2007-08-24 15:53:41 +10:00
int ctdb_ctrl_register_server_id ( struct ctdb_context * ctdb ,
struct timeval timeout ,
struct ctdb_server_id * id ) ;
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_unregister_server_id ( struct ctdb_context * ctdb ,
struct timeval timeout ,
2007-08-24 15:53:41 +10:00
struct ctdb_server_id * id ) ;
int ctdb_ctrl_check_server_id ( struct ctdb_context * ctdb ,
2010-05-20 15:18:30 +09:30
struct timeval timeout , uint32_t destnode ,
2007-08-24 15:53:41 +10:00
struct ctdb_server_id * id , uint32_t * status ) ;
2007-08-26 10:57:02 +10:00
int ctdb_ctrl_get_server_id_list ( struct ctdb_context * ctdb ,
TALLOC_CTX * mem_ctx ,
2010-05-20 15:18:30 +09:30
struct timeval timeout , uint32_t destnode ,
2007-08-26 10:57:02 +10:00
struct ctdb_server_id_list * * svid_list ) ;
2007-08-24 15:53:41 +10:00
2008-01-17 11:33:23 +11:00
struct ctdb_uptime {
struct timeval current_time ;
struct timeval ctdbd_start_time ;
2008-07-02 13:55:59 +10:00
struct timeval last_recovery_started ;
struct timeval last_recovery_finished ;
2008-01-17 11:33:23 +11:00
} ;
2009-01-13 16:17:20 +11:00
/*
struct for tcp_client control
this is an ipv4 only version of this structure used by samba
2010-05-20 15:18:30 +09:30
samba will later be migrated over to use the
2009-01-13 16:17:20 +11: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 09:03:58 +10:00
int ctdb_socket_connect ( struct ctdb_context * ctdb ) ;
2008-01-17 11:33:23 +11: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 13:59:28 +11:00
int ctdb_ctrl_end_recovery ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode ) ;
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_getreclock ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2008-02-29 10:03:39 +11:00
TALLOC_CTX * mem_ctx , const char * * reclock ) ;
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_setreclock ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2009-06-25 14:25:18 +10:00
const char * reclock ) ;
2008-02-29 10:03:39 +11:00
2008-11-19 14:43:46 +11: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 13:59:28 +11: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 10:52:31 +11: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 13:59:28 +11:00
2008-02-29 12:37:42 +11:00
int ctdb_read_pnn_lock ( int fd , int32_t pnn ) ;
2008-05-06 10:02:27 +10: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 00:25:16 +01:00
int32_t ctdb_ctrl_transaction_active ( struct ctdb_context * ctdb ,
uint32_t destnode ,
uint32_t db_id ) ;
2010-05-20 15:18:30 +09:30
struct ctdb_marshall_buffer * ctdb_marshall_add ( TALLOC_CTX * mem_ctx ,
2008-07-30 19:58:27 +10: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 15:18:30 +09:30
int ctdb_transaction_fetch ( struct ctdb_transaction_handle * h ,
TALLOC_CTX * mem_ctx ,
2008-07-30 19:58:27 +10:00
TDB_DATA key , TDB_DATA * data ) ;
2010-05-20 15:18:30 +09:30
int ctdb_transaction_store ( struct ctdb_transaction_handle * h ,
2008-07-30 19:58:27 +10:00
TDB_DATA key , TDB_DATA data ) ;
int ctdb_transaction_commit ( struct ctdb_transaction_handle * h ) ;
2008-09-09 13:44:46 +10:00
int ctdb_ctrl_recd_ping ( struct ctdb_context * ctdb ) ;
2010-07-19 19:29:09 +09:30
int switch_from_server_to_client ( struct ctdb_context * ctdb , const char * fmt ,
. . . ) ;
2009-03-23 12:37:30 +11:00
2010-05-20 15:18:30 +09:30
int ctdb_ctrl_getscriptstatus ( struct ctdb_context * ctdb ,
struct timeval timeout , uint32_t destnode ,
2009-12-08 01:50:55 +10:30
TALLOC_CTX * mem_ctx , enum ctdb_eventscript_call type ,
struct ctdb_scripts_wire * * script_status ) ;
2009-03-23 19:07:45 +11:00
2009-07-01 09:17:13 +10: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 12:22:46 +10: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 09:17:13 +10:00
2009-07-28 09:58:11 +10:00
int ctdb_ctrl_setnatgwstate ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , uint32_t natgwstate ) ;
2009-07-28 13:45:13 +10: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 09:58:11 +10:00
2009-08-13 13:04:08 +10: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-04 02:20:39 +10: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 14:26:09 +11: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 15:04:18 +11: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-04 02:20:39 +10:00
2010-09-29 12:13:05 +10:00
int ctdb_ctrl_getstathistory ( struct ctdb_context * ctdb , struct timeval timeout , uint32_t destnode , TALLOC_CTX * mem_ctx , struct ctdb_statistics_wire * * stats ) ;
2011-07-20 12:06:37 +10:00
struct ctdb_client_control_state *
ctdb_ctrl_updaterecord_send ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct timeval timeout , uint32_t destnode , struct ctdb_db_context * ctdb_db , TDB_DATA key , struct ctdb_ltdb_header * header , TDB_DATA data ) ;
int ctdb_ctrl_updaterecord_recv ( struct ctdb_context * ctdb , struct ctdb_client_control_state * state ) ;
int
ctdb_ctrl_updaterecord ( struct ctdb_context * ctdb , TALLOC_CTX * mem_ctx , struct timeval timeout , uint32_t destnode , struct ctdb_db_context * ctdb_db , TDB_DATA key , struct ctdb_ltdb_header * header , TDB_DATA data ) ;
2011-09-01 11:08:18 +10:00
struct ctdb_client_control_state *
ctdb_ctrl_set_db_readonly_send ( struct ctdb_context * ctdb , uint32_t destnode , uint32_t dbid ) ;
int ctdb_ctrl_set_db_readonly_recv ( struct ctdb_context * ctdb , struct ctdb_client_control_state * state ) ;
int ctdb_ctrl_set_db_readonly ( struct ctdb_context * ctdb , uint32_t destnode , uint32_t dbid ) ;
2010-05-20 15:18:30 +09:30
# endif /* _CTDB_CLIENT_H */