struct ctdb_db_vacuum *db_vacuum);
int ctdb_reply_control_db_vacuum(struct ctdb_reply_control *reply);
+void ctdb_req_control_echo_data(struct ctdb_req_control *request,
+ struct ctdb_echo_data *echo_data);
+int ctdb_reply_control_echo_data(struct ctdb_reply_control *reply);
+
/* From protocol/protocol_debug.c */
void ctdb_packet_print(uint8_t *buf, size_t buflen, FILE *fp);
return reply->status;
}
+
+/* CTDB_CONTROL_ECHO_DATA */
+
+void ctdb_req_control_echo_data(struct ctdb_req_control *request,
+ struct ctdb_echo_data *echo_data)
+{
+ request->opcode = CTDB_CONTROL_ECHO_DATA;
+ request->pad = 0;
+ request->srvid = 0;
+ request->client_id = 0;
+ request->flags = 0;
+
+ request->rdata.opcode = CTDB_CONTROL_ECHO_DATA;
+ request->rdata.data.echo_data = echo_data;
+}
+
+int ctdb_reply_control_echo_data(struct ctdb_reply_control *reply)
+{
+ if (reply->rdata.opcode != CTDB_CONTROL_ECHO_DATA) {
+ return EPROTO;
+ }
+
+ return reply->status;
+}
case CTDB_CONTROL_DB_VACUUM:
len = ctdb_db_vacuum_len(cd->data.db_vacuum);
break;
+
+ case CTDB_CONTROL_ECHO_DATA:
+ len = ctdb_echo_data_len(cd->data.echo_data);
+ break;
}
return len;
case CTDB_CONTROL_DB_VACUUM:
ctdb_db_vacuum_push(cd->data.db_vacuum, buf, &np);
break;
+
+ case CTDB_CONTROL_ECHO_DATA:
+ ctdb_echo_data_push(cd->data.echo_data, buf, &np);
+ break;
}
*npush = np;
&cd->data.db_vacuum,
&np);
break;
+
+ case CTDB_CONTROL_ECHO_DATA:
+ ret = ctdb_echo_data_pull(buf,
+ buflen,
+ mem_ctx,
+ &cd->data.echo_data,
+ &np);
+ break;
}
if (ret != 0) {
case CTDB_CONTROL_DB_VACUUM:
break;
+
+ case CTDB_CONTROL_ECHO_DATA:
+ len = ctdb_echo_data_len(cd->data.echo_data);
+ break;
}
return len;
case CTDB_CONTROL_DB_VACUUM:
break;
+
+ case CTDB_CONTROL_ECHO_DATA:
+ ctdb_echo_data_push(cd->data.echo_data, buf, &np);
+ break;
}
*npush = np;
case CTDB_CONTROL_DB_VACUUM:
break;
+
+ case CTDB_CONTROL_ECHO_DATA:
+ ret = ctdb_echo_data_pull(buf,
+ buflen,
+ mem_ctx,
+ &cd->data.echo_data,
+ &np);
+ break;
}
if (ret != 0) {
{ CTDB_CONTROL_TUNNEL_DEREGISTER, "TUNNEL_DEREGISTER" },
{ CTDB_CONTROL_VACUUM_FETCH, "VACUUM_FETCH" },
{ CTDB_CONTROL_DB_VACUUM, "DB_VACUUM" },
+ { CTDB_CONTROL_ECHO_DATA, "ECHO_DATA" },
{ MAP_END, "" },
};
. "${TEST_SCRIPTS_DIR}/unit.sh"
-last_control=155
+last_control=156
generate_control_output ()
{
assert(cd->data.db_vacuum != NULL);
fill_ctdb_db_vacuum(mem_ctx, cd->data.db_vacuum);
break;
+
+ case CTDB_CONTROL_ECHO_DATA:
+ cd->data.echo_data = talloc(mem_ctx, struct ctdb_echo_data);
+ assert(cd->data.echo_data != NULL);
+ fill_ctdb_echo_data(mem_ctx, cd->data.echo_data);
+ break;
}
}
case CTDB_CONTROL_DB_VACUUM:
verify_ctdb_db_vacuum(cd->data.db_vacuum, cd2->data.db_vacuum);
break;
+
+ case CTDB_CONTROL_ECHO_DATA:
+ verify_ctdb_echo_data(cd->data.echo_data, cd2->data.echo_data);
+ break;
}
}
case CTDB_CONTROL_DB_VACUUM:
break;
+
+ case CTDB_CONTROL_ECHO_DATA:
+ cd->data.echo_data = talloc(mem_ctx, struct ctdb_echo_data);
+ assert(cd->data.echo_data != NULL);
+ fill_ctdb_echo_data(mem_ctx, cd->data.echo_data);
+ break;
}
}
case CTDB_CONTROL_DB_VACUUM:
break;
+
+ case CTDB_CONTROL_ECHO_DATA:
+ verify_ctdb_echo_data(cd->data.echo_data, cd2->data.echo_data);
+ break;
}
}
PROTOCOL_CTDB4_TEST(struct ctdb_reply_dmaster, ctdb_reply_dmaster,
CTDB_REPLY_DMASTER);
-#define NUM_CONTROLS 156
+#define NUM_CONTROLS 157
PROTOCOL_CTDB2_TEST(struct ctdb_req_control_data, ctdb_req_control_data);
PROTOCOL_CTDB2_TEST(struct ctdb_reply_control_data, ctdb_reply_control_data);