2007-06-10 21:02:09 +04:00
/*
Unix SMB / CIFS implementation .
Samba3 ctdb connection handling
Copyright ( C ) Volker Lendecke 2007
2011-10-23 22:56:08 +04:00
2007-06-10 21:02:09 +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-09 23:25:36 +04:00
the Free Software Foundation ; either version 3 of the License , or
2007-06-10 21:02:09 +04:00
( at your option ) any later version .
2011-10-23 22:56:08 +04:00
2007-06-10 21:02:09 +04:00
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
2011-10-23 22:56:08 +04:00
2007-06-10 21:02:09 +04:00
You should have received a copy of the GNU General Public License
2007-07-10 04:52:41 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2007-06-10 21:02:09 +04:00
*/
2008-01-16 12:09:48 +03:00
# ifndef _CTDBD_CONN_H
# define _CTDBD_CONN_H
2016-04-08 17:14:33 +03:00
# include "replace.h"
# include "system/filesys.h"
# include "system/network.h"
2017-01-09 10:17:02 +03:00
# include "lib/dbwrap/dbwrap.h"
2015-03-12 17:40:16 +03:00
# include <tdb.h>
2016-04-08 17:14:33 +03:00
# include <tevent.h>
2011-05-05 13:25:29 +04:00
2007-06-10 21:02:09 +04:00
struct ctdbd_connection ;
2011-03-24 17:31:06 +03:00
struct messaging_context ;
struct messaging_rec ;
2007-06-10 21:02:09 +04:00
2016-04-05 11:09:35 +03:00
int ctdbd_init_connection ( TALLOC_CTX * mem_ctx ,
const char * sockname , int timeout ,
struct ctdbd_connection * * pconn ) ;
2016-07-09 09:59:09 +03:00
int ctdbd_reinit_connection ( TALLOC_CTX * mem_ctx ,
const char * sockname , int timeout ,
struct ctdbd_connection * conn ) ;
2017-01-09 10:17:02 +03:00
int ctdbd_setup_fde ( struct ctdbd_connection * conn , struct tevent_context * ev ) ;
2016-04-05 11:09:35 +03:00
2012-07-30 17:31:59 +04:00
uint32_t ctdbd_vnn ( const struct ctdbd_connection * conn ) ;
2007-06-10 21:02:09 +04:00
2010-01-23 02:05:15 +03:00
int ctdbd_conn_get_fd ( struct ctdbd_connection * conn ) ;
2017-06-01 19:00:45 +03:00
void ctdbd_socket_readable ( struct tevent_context * ev ,
struct ctdbd_connection * conn ) ;
2010-01-23 02:05:15 +03:00
2015-10-03 06:42:05 +03:00
int ctdbd_messaging_send_iov ( struct ctdbd_connection * conn ,
uint32_t dst_vnn , uint64_t dst_srvid ,
const struct iovec * iov , int iovlen ) ;
2007-06-10 21:02:09 +04:00
2012-07-30 17:31:59 +04:00
bool ctdbd_process_exists ( struct ctdbd_connection * conn , uint32_t vnn ,
2017-08-29 14:26:20 +03:00
pid_t pid , uint64_t unique_id ) ;
2007-06-10 21:02:09 +04:00
char * ctdbd_dbpath ( struct ctdbd_connection * conn ,
TALLOC_CTX * mem_ctx , uint32_t db_id ) ;
2015-10-03 06:42:05 +03:00
int ctdbd_db_attach ( struct ctdbd_connection * conn , const char * name ,
2017-07-11 21:41:43 +03:00
uint32_t * db_id , bool persistent ) ;
2007-06-10 21:02:09 +04:00
2015-10-03 06:42:05 +03:00
int ctdbd_migrate ( struct ctdbd_connection * conn , uint32_t db_id , TDB_DATA key ) ;
2007-06-10 21:02:09 +04:00
2015-10-03 06:42:05 +03:00
int ctdbd_parse ( struct ctdbd_connection * conn , uint32_t db_id ,
TDB_DATA key , bool local_copy ,
void ( * parser ) ( TDB_DATA key , TDB_DATA data ,
void * private_data ) ,
void * private_data ) ;
2007-06-10 21:02:09 +04:00
2015-10-03 06:42:05 +03:00
int ctdbd_traverse ( struct ctdbd_connection * master , uint32_t db_id ,
void ( * fn ) ( TDB_DATA key , TDB_DATA data ,
void * private_data ) ,
void * private_data ) ;
2007-06-10 21:02:09 +04:00
2015-10-03 06:42:05 +03:00
int ctdbd_register_ips ( struct ctdbd_connection * conn ,
const struct sockaddr_storage * server ,
const struct sockaddr_storage * client ,
2017-06-01 18:45:47 +03:00
int ( * cb ) ( struct tevent_context * ev ,
uint32_t src_vnn , uint32_t dst_vnn ,
2015-10-03 06:42:05 +03:00
uint64_t dst_srvid ,
const uint8_t * msg , size_t msglen ,
void * private_data ) ,
void * private_data ) ;
2007-06-10 21:02:09 +04:00
2015-10-03 06:42:05 +03:00
int ctdbd_control_local ( struct ctdbd_connection * conn , uint32_t opcode ,
uint64_t srvid , uint32_t flags , TDB_DATA data ,
TALLOC_CTX * mem_ctx , TDB_DATA * outdata ,
2016-04-21 14:31:39 +03:00
int32_t * cstatus ) ;
2015-10-03 06:42:05 +03:00
int ctdb_watch_us ( struct ctdbd_connection * conn ) ;
2015-10-03 06:42:05 +03:00
int ctdb_unwatch ( struct ctdbd_connection * conn ) ;
2015-05-19 08:05:24 +03:00
2015-10-29 08:36:30 +03:00
struct ctdb_req_message_old ;
2015-05-19 08:05:24 +03:00
2015-10-03 06:42:05 +03:00
int register_with_ctdbd ( struct ctdbd_connection * conn , uint64_t srvid ,
2017-06-01 18:45:47 +03:00
int ( * cb ) ( struct tevent_context * ev ,
uint32_t src_vnn , uint32_t dst_vnn ,
2015-10-03 06:42:05 +03:00
uint64_t dst_srvid ,
const uint8_t * msg , size_t msglen ,
void * private_data ) ,
void * private_data ) ;
2015-10-03 06:42:05 +03:00
int ctdbd_probe ( const char * sockname , int timeout ) ;
2008-08-07 10:20:05 +04:00
2017-01-09 10:17:02 +03:00
struct tevent_req * ctdbd_parse_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct ctdbd_connection * conn ,
uint32_t db_id ,
TDB_DATA key ,
bool local_copy ,
void ( * parser ) ( TDB_DATA key ,
TDB_DATA data ,
void * private_data ) ,
void * private_data ,
enum dbwrap_req_state * req_state ) ;
int ctdbd_parse_recv ( struct tevent_req * req ) ;
2008-01-16 12:09:48 +03:00
# endif /* _CTDBD_CONN_H */