CTDB_CONTROL_GET_PUBLIC_IPS = 51,
CTDB_CONTROL_MODIFY_FLAGS = 52,
CTDB_CONTROL_GET_ALL_TUNABLES = 53,
+ CTDB_CONTROL_KILL_TCP = 54,
};
/*
struct sockaddr_in dest;
};
+/*
+ struct for kill_tcp control
+ */
+struct ctdb_control_kill_tcp {
+ struct sockaddr_in src;
+ struct sockaddr_in dst;
+};
+
/*
struct for tcp_add and tcp_remove controls
*/
int32_t ctdb_control_tcp_add(struct ctdb_context *ctdb, TDB_DATA indata);
int32_t ctdb_control_tcp_remove(struct ctdb_context *ctdb, TDB_DATA indata);
int32_t ctdb_control_startup(struct ctdb_context *ctdb, uint32_t vnn);
+int32_t ctdb_control_kill_tcp(struct ctdb_context *ctdb, TDB_DATA indata);
void ctdb_takeover_client_destructor_hook(struct ctdb_client *client);
int ctdb_event_script(struct ctdb_context *ctdb, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
CHECK_CONTROL_DATA_SIZE(sizeof(struct ctdb_node_modflags));
return ctdb_control_modflags(ctdb, indata);
+ case CTDB_CONTROL_KILL_TCP:
+ CHECK_CONTROL_DATA_SIZE(sizeof(struct ctdb_control_kill_tcp));
+ return ctdb_control_kill_tcp(ctdb, indata);
+
default:
DEBUG(0,(__location__ " Unknown CTDB control opcode %u\n", opcode));
return -1;
return 0;
}
+
+/*
+ called by a daemon to inform us of a TCP connection that one of its
+ clients managing that should tickled with an ACK when IP takeover is
+ done
+ */
+int32_t ctdb_control_kill_tcp(struct ctdb_context *ctdb, TDB_DATA indata)
+{
+ struct ctdb_control_kill_tcp *killtcp = (struct ctdb_control_kill_tcp *)indata.dptr;
+
+ ctdb_killtcp_add_connection(ctdb, &killtcp->src, &killtcp->dst);
+
+ return 0;
+}
+
+
/*
called by a daemon to inform us of a TCP connection that one of its
clients managing that should tickled with an ACK when IP takeover is