Event scripts run the "ipreallocated" hook in order to notice that some ip addresses
in the cluster potentially changed.
CTDB_SRVID_IPREALLOCATED gives C code a chance to get notified as well once the event
scripts are finished.
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Martin Schwenke <martin@meltin.net>
/* SRVID to inform clients that an IP address has been taken over */
#define CTDB_SRVID_TAKE_IP 0xF301000000000000LL
+/* SRVID to inform clients that CTDB_EVENT_IPREALLOCATED finished */
+#define CTDB_SRVID_IPREALLOCATED 0xF302000000000000LL
+
/* SRVID to inform recovery daemon of the node flags - OBSOLETE */
#define CTDB_SRVID_SET_NODE_FLAGS 0xF400000000000000LL
fprintf(fp, "RELEASE_IP");
} else if (srvid == CTDB_SRVID_TAKE_IP) {
fprintf(fp, "TAKE_IP");
+ } else if (srvid == CTDB_SRVID_IPREALLOCATED) {
+ fprintf(fp, "IPREALLOCATED");
} else if (srvid == CTDB_SRVID_SET_NODE_FLAGS) {
fprintf(fp, "SET_NODE_FLAGS");
} else if (srvid == CTDB_SRVID_RECD_UPDATE_IP) {
len = ctdb_string_len(&mdata->ipaddr);
break;
+ case CTDB_SRVID_IPREALLOCATED:
+ break;
+
case CTDB_SRVID_SET_NODE_FLAGS:
len = ctdb_node_flag_change_len(mdata->flag_change);
break;
ctdb_string_push(&mdata->ipaddr, buf, &np);
break;
+ case CTDB_SRVID_IPREALLOCATED:
+ break;
+
case CTDB_SRVID_SET_NODE_FLAGS:
ctdb_node_flag_change_push(mdata->flag_change, buf, &np);
break;
&np);
break;
+ case CTDB_SRVID_IPREALLOCATED:
+ break;
+
case CTDB_SRVID_SET_NODE_FLAGS:
ret = ctdb_node_flag_change_pull(buf, buflen, mem_ctx,
&mdata->flag_change, &np);
{
struct ipreallocated_callback_state *state =
talloc_get_type(p, struct ipreallocated_callback_state);
+ TDB_DATA data = { .dsize = 0, };
if (status != 0) {
DEBUG(DEBUG_ERR,
}
}
+ D_INFO("Sending IPREALLOCATED message\n");
+ ctdb_daemon_send_message(ctdb, ctdb->pnn, CTDB_SRVID_IPREALLOCATED, data);
+
ctdb_request_control_reply(ctdb, state->c, NULL, status, NULL);
talloc_free(state);
}