add a new serverid to send a message everytime an ip address is taken on the local...
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Mon, 13 Sep 2010 05:42:00 +0000 (15:42 +1000)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Mon, 13 Sep 2010 05:43:19 +0000 (15:43 +1000)
include/ctdb_protocol.h
server/ctdb_takeover.c

index 4cd3fcac70c86b2f781e7129d24e68bc1d906a31..a9f6249d617788c73d1530556ac679fbdb49a3f5 100644 (file)
@@ -84,6 +84,11 @@ struct ctdb_call_info {
  */
 #define CTDB_SRVID_RELEASE_IP 0xF300000000000000LL
 
+/*
+   a message handler ID meaning that an IP address has been taken
+ */
+#define CTDB_SRVID_TAKE_IP 0xF301000000000000LL
+
 /*
    a message ID to set the node flags in the recovery daemon
  */
index 193129445fbb3ea422ea544b0d385968dfd264a4..d7fb5ad5f0839093c836d46db341b854f7372abc 100644 (file)
@@ -331,6 +331,7 @@ static void ctdb_do_takeip_callback(struct ctdb_context *ctdb, int status,
        struct ctdb_do_takeip_state *state =
                talloc_get_type(private_data, struct ctdb_do_takeip_state);
        int32_t ret;
+       TDB_DATA data;
 
        if (status != 0) {
                if (status == -ETIME) {
@@ -351,6 +352,13 @@ static void ctdb_do_takeip_callback(struct ctdb_context *ctdb, int status,
                return;
        }
 
+       data.dptr  = (uint8_t *)ctdb_addr_to_str(&state->vnn->public_address);
+       data.dsize = strlen((char *)data.dptr) + 1;
+       DEBUG(DEBUG_INFO,(__location__ " sending TAKE_IP for '%s'\n", data.dptr));
+
+       ctdb_daemon_send_message(ctdb, ctdb->pnn, CTDB_SRVID_TAKE_IP, data);
+
+
        /* the control succeeded */
        ctdb_request_control_reply(ctdb, state->c, NULL, 0, NULL);
        talloc_free(state);