int ctdb_reply_control_db_attach_replicated(struct ctdb_reply_control *reply,
uint32_t *db_id);
+void ctdb_req_control_check_pid_srvid(struct ctdb_req_control *request,
+ struct ctdb_pid_srvid *pid_srvid);
+int ctdb_reply_control_check_pid_srvid(struct ctdb_reply_control *reply,
+ int *status);
+
/* From protocol/protocol_debug.c */
void ctdb_packet_print(uint8_t *buf, size_t buflen, FILE *fp);
}
return reply->status;
}
+
+/* CTDB_CONTROL_CHECK_PID_SRVID */
+
+void ctdb_req_control_check_pid_srvid(struct ctdb_req_control *request,
+ struct ctdb_pid_srvid *pid_srvid)
+{
+ request->opcode = CTDB_CONTROL_CHECK_PID_SRVID;
+ request->pad = 0;
+ request->srvid = 0;
+ request->client_id = 0;
+ request->flags = 0;
+
+ request->rdata.opcode = CTDB_CONTROL_CHECK_PID_SRVID;
+ request->rdata.data.pid_srvid = pid_srvid;
+}
+
+int ctdb_reply_control_check_pid_srvid(struct ctdb_reply_control *reply,
+ int *status)
+{
+ if (reply->rdata.opcode != CTDB_CONTROL_CHECK_PID_SRVID) {
+ return EPROTO;
+ }
+
+ *status = reply->status;
+ reply->status = 0;
+
+ return reply->status;
+}
case CTDB_CONTROL_DB_ATTACH_REPLICATED:
len = ctdb_string_len(&cd->data.db_name);
break;
+
+ case CTDB_CONTROL_CHECK_PID_SRVID:
+ len = ctdb_pid_srvid_len(cd->data.pid_srvid);
+ break;
}
return len;
case CTDB_CONTROL_DB_ATTACH_REPLICATED:
ctdb_string_push(&cd->data.db_name, buf, &np);
break;
+
+ case CTDB_CONTROL_CHECK_PID_SRVID:
+ ctdb_pid_srvid_push(cd->data.pid_srvid, buf, &np);
+ break;
}
*npush = np;
ret = ctdb_string_pull(buf, buflen, mem_ctx,
&cd->data.db_name, &np);
break;
+
+ case CTDB_CONTROL_CHECK_PID_SRVID:
+ ret = ctdb_pid_srvid_pull(buf, buflen, mem_ctx,
+ &cd->data.pid_srvid, &np);
+ break;
}
if (ret != 0) {
case CTDB_CONTROL_DB_ATTACH_REPLICATED:
len = ctdb_uint32_len(&cd->data.db_id);
break;
+
+ case CTDB_CONTROL_CHECK_PID_SRVID:
+ break;
}
return len;
case CTDB_CONTROL_DB_ATTACH_REPLICATED:
ctdb_uint32_push(&cd->data.db_id, buf, &np);
break;
+
+ case CTDB_CONTROL_CHECK_PID_SRVID:
+ break;
}
*npush = np;
case CTDB_CONTROL_DB_ATTACH_REPLICATED:
ret = ctdb_uint32_pull(buf, buflen, &cd->data.db_id, &np);
break;
+
+ case CTDB_CONTROL_CHECK_PID_SRVID:
+ break;
}
if (ret != 0) {
{ CTDB_CONTROL_DB_PUSH_CONFIRM, "DB_PUSH_CONFIRM" },
{ CTDB_CONTROL_DB_OPEN_FLAGS, "DB_OPEN_FLAGS" },
{ CTDB_CONTROL_DB_ATTACH_REPLICATED, "DB_ATTACH_REPLICATED" },
+ { CTDB_CONTROL_CHECK_PID_SRVID, "CHECK_PID_SRVID" },
{ MAP_END, "" },
};
. "${TEST_SCRIPTS_DIR}/unit.sh"
-last_control=150
+last_control=151
generate_control_output ()
{
fill_ctdb_string(mem_ctx, &cd->data.db_name);
assert(cd->data.db_name != NULL);
break;
+
+ case CTDB_CONTROL_CHECK_PID_SRVID:
+ cd->data.pid_srvid = talloc(mem_ctx, struct ctdb_pid_srvid);
+ assert(cd->data.pid_srvid != NULL);
+ fill_ctdb_pid_srvid(mem_ctx, cd->data.pid_srvid);
+ break;
}
}
verify_ctdb_string(&cd->data.db_name, &cd2->data.db_name);
break;
+ case CTDB_CONTROL_CHECK_PID_SRVID:
+ verify_ctdb_pid_srvid(cd->data.pid_srvid, cd2->data.pid_srvid);
+ break;
}
}
cd->data.db_id = rand32();
break;
+ case CTDB_CONTROL_CHECK_PID_SRVID:
+ break;
}
}
assert(cd->data.db_id == cd2->data.db_id);
break;
+ case CTDB_CONTROL_CHECK_PID_SRVID:
+ break;
}
}
PROTOCOL_CTDB4_TEST(struct ctdb_reply_dmaster, ctdb_reply_dmaster,
CTDB_REPLY_DMASTER);
-#define NUM_CONTROLS 151
+#define NUM_CONTROLS 152
PROTOCOL_CTDB2_TEST(struct ctdb_req_control_data, ctdb_req_control_data);
PROTOCOL_CTDB2_TEST(struct ctdb_reply_control_data, ctdb_reply_control_data);