along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#include "includes.h"
-#include "lib/events/events.h"
+#include "lib/tevent/tevent.h"
#include "lib/tdb/include/tdb.h"
#include "system/network.h"
#include "system/filesys.h"
}
}
ctdb->statistics.recovering = (ctdb->recovery_mode == CTDB_RECOVERY_ACTIVE);
+ ctdb->statistics.statistics_current_time = timeval_current();
+
outdata->dptr = (uint8_t *)&ctdb->statistics;
outdata->dsize = sizeof(ctdb->statistics);
return 0;
case CTDB_CONTROL_STATISTICS_RESET: {
CHECK_CONTROL_DATA_SIZE(0);
ZERO_STRUCT(ctdb->statistics);
+ ctdb->statistics.statistics_start_time = timeval_current();
return 0;
}
return ctdb_control_push_db(ctdb, indata);
case CTDB_CONTROL_GET_RECMODE: {
- return ctdb->recovery_mode;
+ int i;
+ if (ctdb->recovery_mode == CTDB_RECOVERY_ACTIVE) {
+ return CTDB_RECOVERY_ACTIVE;
+ }
+ for (i=1; i<=NUM_DB_PRIORITIES; i++) {
+ if (ctdb->freeze_mode[i] == CTDB_FREEZE_FROZEN) {
+ return CTDB_RECOVERY_ACTIVE;
+ }
+ }
+ return CTDB_RECOVERY_NORMAL;
}
case CTDB_CONTROL_SET_RECMASTER: {
return ctdb_control_startup(ctdb, srcnode);
case CTDB_CONTROL_TCP_ADD:
- CHECK_CONTROL_DATA_SIZE(sizeof(struct ctdb_control_tcp_vnn));
- return ctdb_control_tcp_add(ctdb, indata);
+ CHECK_CONTROL_DATA_SIZE(sizeof(struct ctdb_tcp_connection));
+ return ctdb_control_tcp_add(ctdb, indata, false);
+
+ case CTDB_CONTROL_TCP_ADD_DELAYED_UPDATE:
+ CHECK_CONTROL_DATA_SIZE(sizeof(struct ctdb_tcp_connection));
+ return ctdb_control_tcp_add(ctdb, indata, true);
+
+ case CTDB_CONTROL_TCP_REMOVE:
+ CHECK_CONTROL_DATA_SIZE(sizeof(struct ctdb_tcp_connection));
+ return ctdb_control_tcp_remove(ctdb, indata);
case CTDB_CONTROL_SET_TUNABLE:
return ctdb_control_set_tunable(ctdb, indata);
CHECK_CONTROL_DATA_SIZE(sizeof(uint32_t));
return ctdb_control_db_get_health(ctdb, indata, outdata);
+ case CTDB_CONTROL_GET_PUBLIC_IP_INFO:
+ CHECK_CONTROL_DATA_SIZE(sizeof(ctdb_sock_addr));
+ return ctdb_control_get_public_ip_info(ctdb, c, indata, outdata);
+
+ case CTDB_CONTROL_GET_IFACES:
+ CHECK_CONTROL_DATA_SIZE(0);
+ return ctdb_control_get_ifaces(ctdb, c, outdata);
+
+ case CTDB_CONTROL_SET_IFACE_LINK_STATE:
+ CHECK_CONTROL_DATA_SIZE(sizeof(struct ctdb_control_iface_info));
+ return ctdb_control_set_iface_link(ctdb, c, indata);
+
default:
DEBUG(DEBUG_CRIT,(__location__ " Unknown CTDB control opcode %u\n", opcode));
return -1;