summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ctdb/protocol/protocol.h5
-rw-r--r--ctdb/protocol/protocol_debug.c2
-rw-r--r--ctdb/protocol/protocol_message.c12
3 files changed, 18 insertions, 1 deletions
diff --git a/ctdb/protocol/protocol.h b/ctdb/protocol/protocol.h
index 28f036eff55..3914c692091 100644
--- a/ctdb/protocol/protocol.h
+++ b/ctdb/protocol/protocol.h
@@ -124,6 +124,9 @@ struct ctdb_call {
/* SRVID prefix used during recovery for pulling and pushing databases */
#define CTDB_SRVID_RECOVERY 0xF001000000000000LL
+/* SRVID to assign of banning credits */
+#define CTDB_SRVID_BANNING 0xF002000000000000LL
+
/* SRVID to inform of election data */
#define CTDB_SRVID_ELECTION 0xF100000000000000LL
@@ -992,7 +995,7 @@ union ctdb_message_data {
uint32_t db_id;
/* SRVID_MEM_DUMP, SRVID_TAKEOVER_RUN */
struct ctdb_srvid_message *msg;
- /* SRVID_REBALANCE_NODE */
+ /* SRVID_BANNING, SRVID_REBALANCE_NODE */
uint32_t pnn;
/* SRVID_DISABLE_TAKEOVER_RUNS, SRVID_DISABLE_RECOVERIES */
struct ctdb_disable_message *disable;
diff --git a/ctdb/protocol/protocol_debug.c b/ctdb/protocol/protocol_debug.c
index 889ebec377f..c54e014e2d5 100644
--- a/ctdb/protocol/protocol_debug.c
+++ b/ctdb/protocol/protocol_debug.c
@@ -282,6 +282,8 @@ static void ctdb_srvid_print(uint64_t srvid, FILE *fp)
} else if ((srvid & prefix) == CTDB_SRVID_RECOVERY) {
srvid = srvid & ~CTDB_SRVID_RECOVERY;
fprintf(fp, "RECOVERY-%"PRIx64"", srvid);
+ } else if (srvid == CTDB_SRVID_BANNING) {
+ fprintf(fp, "BANNING");
} else if (srvid == CTDB_SRVID_ELECTION) {
fprintf(fp, "ELECTION");
} else if (srvid == CTDB_SRVID_RECONFIGURE) {
diff --git a/ctdb/protocol/protocol_message.c b/ctdb/protocol/protocol_message.c
index b6701092c85..920cd1cd14a 100644
--- a/ctdb/protocol/protocol_message.c
+++ b/ctdb/protocol/protocol_message.c
@@ -40,6 +40,10 @@ static size_t ctdb_message_data_len(union ctdb_message_data *mdata,
size_t len = 0;
switch (srvid) {
+ case CTDB_SRVID_BANNING:
+ len = ctdb_uint32_len(mdata->pnn);
+ break;
+
case CTDB_SRVID_ELECTION:
len = ctdb_election_message_len(mdata->election);
break;
@@ -114,6 +118,10 @@ static void ctdb_message_data_push(union ctdb_message_data *mdata,
uint64_t srvid, uint8_t *buf)
{
switch (srvid) {
+ case CTDB_SRVID_BANNING:
+ ctdb_uint32_push(mdata->pnn, buf);
+ break;
+
case CTDB_SRVID_ELECTION:
ctdb_election_message_push(mdata->election, buf);
break;
@@ -189,6 +197,10 @@ static int ctdb_message_data_pull(uint8_t *buf, size_t buflen,
int ret = 0;
switch (srvid) {
+ case CTDB_SRVID_BANNING:
+ ret = ctdb_uint32_pull(buf, buflen, mem_ctx, &mdata->pnn);
+ break;
+
case CTDB_SRVID_ELECTION:
ret = ctdb_election_message_pull(buf, buflen, mem_ctx,
&mdata->election);