return ctdb->monitoring_mode;
case CTDB_CONTROL_SHUTDOWN:
- exit(10);
+ ctdb_release_all_ips(ctdb);
+ ctdb_event_script(ctdb, "shutdown");
+ DEBUG(0,("shutting down\n"));
+ exit(0);
case CTDB_CONTROL_MAX_RSN:
CHECK_CONTROL_DATA_SIZE(sizeof(uint32_t));
void ctdb_takeover_client_destructor_hook(struct ctdb_client *client);
int ctdb_event_script(struct ctdb_context *ctdb, const char *fmt, ...);
+void ctdb_release_all_ips(struct ctdb_context *ctdb);
#endif
talloc_free(tcp);
}
}
+
+
+/*
+ release all IPs on shutdown
+ */
+void ctdb_release_all_ips(struct ctdb_context *ctdb)
+{
+ int i;
+
+ if (!ctdb->takeover.enabled) {
+ return;
+ }
+
+ for (i=0;i<ctdb->num_nodes;i++) {
+ struct ctdb_node *node = ctdb->nodes[i];
+ if (ctdb_sys_have_ip(node->public_address)) {
+ ctdb_event_script(ctdb, "releaseip %s %s %u",
+ ctdb->takeover.interface,
+ node->public_address,
+ node->public_netmask_bits);
+ }
+ }
+}
;;
recovered)
+ shutdown)
# restart any services as necessary, like NFS
exit 0
;;