X-Git-Url: http://git.samba.org/samba.git/?a=blobdiff_plain;f=ctdb%2Fclient%2Fclient_control_sync.c;h=e56a2b2f18d506f2db5782db4f7c821f916c696f;hb=e4ea408f52eeb958f646dfa4ef304357a080bdd1;hp=5d4e52ad453667935a0cbe75aa4912d2550419c6;hpb=7d1b39cf805d54166d16a61d6313a885b5929f7f;p=sfrench%2Fsamba-autobuild%2F.git diff --git a/ctdb/client/client_control_sync.c b/ctdb/client/client_control_sync.c index 5d4e52ad453..e56a2b2f18d 100644 --- a/ctdb/client/client_control_sync.c +++ b/ctdb/client/client_control_sync.c @@ -33,6 +33,7 @@ #include "protocol/protocol_api.h" #include "client/client_private.h" #include "client/client.h" +#include "client/client_sync.h" int ctdb_ctrl_process_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct ctdb_client_context *client, @@ -414,14 +415,13 @@ int ctdb_ctrl_statistics_reset(TALLOC_CTX *mem_ctx, struct tevent_context *ev, int ctdb_ctrl_db_attach(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct ctdb_client_context *client, int destnode, struct timeval timeout, - const char *db_name, uint32_t tdb_flags, - uint32_t *db_id) + const char *db_name, uint32_t *db_id) { struct ctdb_req_control request; struct ctdb_reply_control *reply; int ret; - ctdb_req_control_db_attach(&request, db_name, tdb_flags); + ctdb_req_control_db_attach(&request, db_name); ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout, &request, &reply); if (ret != 0) { @@ -817,35 +817,6 @@ int ctdb_ctrl_shutdown(TALLOC_CTX *mem_ctx, struct tevent_context *ev, return 0; } -int ctdb_ctrl_get_monmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct ctdb_client_context *client, - int destnode, struct timeval timeout, - int *mon_mode) -{ - struct ctdb_req_control request; - struct ctdb_reply_control *reply; - int ret; - - ctdb_req_control_get_monmode(&request); - ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout, - &request, &reply); - if (ret != 0) { - DEBUG(DEBUG_ERR, - ("Control GET_MONMODE failed to node %u, ret=%d\n", - destnode, ret)); - return ret; - } - - ret = ctdb_reply_control_get_monmode(reply, mon_mode); - if (ret != 0) { - DEBUG(DEBUG_ERR, - ("Control GET_MONMODE failed, ret=%d\n", ret)); - return ret; - } - - return 0; -} - int ctdb_ctrl_tcp_add(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct ctdb_client_context *client, int destnode, struct timeval timeout, @@ -1120,14 +1091,13 @@ int ctdb_ctrl_db_attach_persistent(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct ctdb_client_context *client, int destnode, struct timeval timeout, - const char *db_name, int tdb_flags, - uint32_t *db_id) + const char *db_name, uint32_t *db_id) { struct ctdb_req_control request; struct ctdb_reply_control *reply; int ret; - ctdb_req_control_db_attach_persistent(&request, db_name, tdb_flags); + ctdb_req_control_db_attach_persistent(&request, db_name); ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout, &request, &reply); if (ret != 0) { @@ -1323,62 +1293,6 @@ int ctdb_ctrl_reload_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev, return 0; } -int ctdb_ctrl_enable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct ctdb_client_context *client, - int destnode, struct timeval timeout) -{ - struct ctdb_req_control request; - struct ctdb_reply_control *reply; - int ret; - - ctdb_req_control_enable_monitor(&request); - ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout, - &request, &reply); - if (ret != 0) { - DEBUG(DEBUG_ERR, - ("Control ENABLE_MONITOR failed to node %u, ret=%d\n", - destnode, ret)); - return ret; - } - - ret = ctdb_reply_control_enable_monitor(reply); - if (ret != 0) { - DEBUG(DEBUG_ERR, - ("Control ENABLE_MONITOR failed, ret=%d\n", ret)); - return ret; - } - - return 0; -} - -int ctdb_ctrl_disable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct ctdb_client_context *client, - int destnode, struct timeval timeout) -{ - struct ctdb_req_control request; - struct ctdb_reply_control *reply; - int ret; - - ctdb_req_control_disable_monitor(&request); - ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout, - &request, &reply); - if (ret != 0) { - DEBUG(DEBUG_ERR, - ("Control DISABLE_MONITOR failed to node %u, ret=%d\n", - destnode, ret)); - return ret; - } - - ret = ctdb_reply_control_disable_monitor(reply); - if (ret != 0) { - DEBUG(DEBUG_ERR, - ("Control DISABLE_MONITOR failed, ret=%d\n", ret)); - return ret; - } - - return 0; -} - int ctdb_ctrl_add_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct ctdb_client_context *client, int destnode, struct timeval timeout, @@ -2100,7 +2014,7 @@ int ctdb_ctrl_tcp_add_delayed_update(TALLOC_CTX *mem_ctx, ret = ctdb_reply_control_tcp_add_delayed_update(reply); if (ret != 0) { DEBUG(DEBUG_ERR, - ("Control TCP_ADD_DELAYED_UDATE failed, ret=%d\n", ret)); + ("Control TCP_ADD_DELAYED_UPDATE failed, ret=%d\n", ret)); return ret; } @@ -2195,48 +2109,6 @@ int ctdb_ctrl_set_db_readonly(TALLOC_CTX *mem_ctx, struct tevent_context *ev, return 0; } -int ctdb_ctrl_check_srvids(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct ctdb_client_context *client, - int destnode, struct timeval timeout, - uint64_t *srvid, int count, uint8_t **result) -{ - struct ctdb_uint64_array srvid_list; - struct ctdb_uint8_array *u8_array; - struct ctdb_req_control request; - struct ctdb_reply_control *reply; - int ret; - - srvid_list.num = count; - srvid_list.val = srvid; - - ctdb_req_control_check_srvids(&request, &srvid_list); - ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout, - &request, &reply); - if (ret != 0) { - DEBUG(DEBUG_ERR, - ("Control CHECK_SRVIDS failed to node %u, ret=%d\n", - destnode, ret)); - return ret; - } - - ret = ctdb_reply_control_check_srvids(reply, &request, &u8_array); - if (ret != 0) { - DEBUG(DEBUG_ERR, - ("Control CHECK_SRVIDS failed, ret=%d\n", ret)); - return ret; - } - - if (u8_array->num != count) { - DEBUG(DEBUG_ERR, - ("Control CHECK_SRVIDS returned invalid data %d != %d\n", - u8_array->num, count)); - return ret; - } - - *result = talloc_steal(mem_ctx, u8_array->val); - return 0; -} - int ctdb_ctrl_traverse_start_ext(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct ctdb_client_context *client, @@ -2657,7 +2529,7 @@ int ctdb_ctrl_db_push_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev, &request, &reply); if (ret != 0) { DEBUG(DEBUG_ERR, - ("Control DB_PUSH failed to node %u, ret=%d\n", + ("Control DB_PUSH_START failed to node %u, ret=%d\n", destnode, ret)); return ret; } @@ -2665,7 +2537,7 @@ int ctdb_ctrl_db_push_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev, ret = ctdb_reply_control_db_push_start(reply); if (ret != 0) { DEBUG(DEBUG_ERR, - ("Control DB_PUSH failed, ret=%d\n", ret)); + ("Control DB_PUSH_START failed, ret=%d\n", ret)); return ret; } @@ -2686,7 +2558,7 @@ int ctdb_ctrl_db_push_confirm(TALLOC_CTX *mem_ctx, struct tevent_context *ev, &request, &reply); if (ret != 0) { DEBUG(DEBUG_ERR, - ("Control DB_PUSH failed to node %u, ret=%d\n", + ("Control DB_PUSH_CONFIRM failed to node %u, ret=%d\n", destnode, ret)); return ret; } @@ -2694,7 +2566,153 @@ int ctdb_ctrl_db_push_confirm(TALLOC_CTX *mem_ctx, struct tevent_context *ev, ret = ctdb_reply_control_db_push_confirm(reply, num_records); if (ret != 0) { DEBUG(DEBUG_ERR, - ("Control DB_PUSH failed, ret=%d\n", ret)); + ("Control DB_PUSH_CONFIRM failed, ret=%d\n", ret)); + return ret; + } + + return 0; +} + +int ctdb_ctrl_db_open_flags(TALLOC_CTX *mem_ctx, struct tevent_context *ev, + struct ctdb_client_context *client, + int destnode, struct timeval timeout, + uint32_t db_id, int *tdb_flags) +{ + struct ctdb_req_control request; + struct ctdb_reply_control *reply; + int ret; + + ctdb_req_control_db_open_flags(&request, db_id); + ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout, + &request, &reply); + if (ret != 0) { + DEBUG(DEBUG_ERR, + ("Control DB_OPEN_FLAGS failed to node %u, ret=%d\n", + destnode, ret)); + return ret; + } + + ret = ctdb_reply_control_db_open_flags(reply, tdb_flags); + if (ret != 0) { + DEBUG(DEBUG_ERR, + ("Control DB_OPEN_FLAGS failed, ret=%d\n", ret)); + return ret; + } + + return 0; +} + +int ctdb_ctrl_db_attach_replicated(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct ctdb_client_context *client, + int destnode, struct timeval timeout, + const char *db_name, uint32_t *db_id) +{ + struct ctdb_req_control request; + struct ctdb_reply_control *reply; + int ret; + + ctdb_req_control_db_attach_replicated(&request, db_name); + ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout, + &request, &reply); + if (ret != 0) { + DEBUG(DEBUG_ERR, + ("Control DB_ATTACH_REPLICATED failed to node %u," + " ret=%d\n", destnode, ret)); + return ret; + } + + ret = ctdb_reply_control_db_attach_replicated(reply, db_id); + if (ret != 0) { + DEBUG(DEBUG_ERR, + ("Control DB_ATTACH_REPLICATED failed, ret=%d\n", ret)); + return ret; + } + + return 0; +} + +int ctdb_ctrl_check_pid_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev, + struct ctdb_client_context *client, + int destnode, struct timeval timeout, + struct ctdb_pid_srvid *pid_srvid, int *status) +{ + struct ctdb_req_control request; + struct ctdb_reply_control *reply; + int ret; + + ctdb_req_control_check_pid_srvid(&request, pid_srvid); + ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout, + &request, &reply); + if (ret != 0) { + DEBUG(DEBUG_ERR, + ("Control CHECK_PID_SRVID failed to node %u, ret=%d\n", + destnode, ret)); + return ret; + } + + ret = ctdb_reply_control_check_pid_srvid(reply, status); + if (ret != 0) { + DEBUG(DEBUG_ERR, + ("Control CHECK_PID_SRVID failed, ret=%d\n", ret)); + return ret; + } + + return 0; +} + +int ctdb_ctrl_tunnel_register(TALLOC_CTX *mem_ctx, struct tevent_context *ev, + struct ctdb_client_context *client, + int destnode, struct timeval timeout, + uint64_t tunnel_id) +{ + struct ctdb_req_control request; + struct ctdb_reply_control *reply; + int ret; + + ctdb_req_control_tunnel_register(&request, tunnel_id); + ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout, + &request, &reply); + if (ret != 0) { + DEBUG(DEBUG_ERR, + ("Control TUNNEL_REGISTER failed to node %u, ret=%d\n", + destnode, ret)); + return ret; + } + + ret = ctdb_reply_control_tunnel_register(reply); + if (ret != 0) { + DEBUG(DEBUG_ERR, + ("Control TUNNEL_REGISTER failed, ret=%d\n", ret)); + return ret; + } + + return 0; +} + +int ctdb_ctrl_tunnel_deregister(TALLOC_CTX *mem_ctx, struct tevent_context *ev, + struct ctdb_client_context *client, + int destnode, struct timeval timeout, + uint64_t tunnel_id) +{ + struct ctdb_req_control request; + struct ctdb_reply_control *reply; + int ret; + + ctdb_req_control_tunnel_deregister(&request, tunnel_id); + ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout, + &request, &reply); + if (ret != 0) { + DEBUG(DEBUG_ERR, + ("Control TUNNEL_DEREGISTER failed to node %u, ret=%d\n", + destnode, ret)); + return ret; + } + + ret = ctdb_reply_control_tunnel_deregister(reply); + if (ret != 0) { + DEBUG(DEBUG_ERR, + ("Control TUNNEL_DEREGISTER failed, ret=%d\n", ret)); return ret; }