client/server: pass type of client to the backend
Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/server.c b/server.c
index 25b15a5..89422e9 100644
--- a/server.c
+++ b/server.c
@@ -233,9 +233,11 @@
buf[pdu->buf_len ] = '\0';
} else if (cmdret->opcode == FIO_NET_CMD_JOB) {
- char *buf = (char *) cmdret->payload;
+ struct cmd_job_pdu *pdu = (struct cmd_job_pdu *) cmdret->payload;
+ char *buf = (char *) pdu->buf;
+ int len = le32_to_cpu(pdu->buf_len);
- buf[cmdret->pdu_len ] = '\0';
+ buf[len] = '\0';
}
}
@@ -361,10 +363,14 @@
static int handle_job_cmd(struct fio_net_cmd *cmd)
{
- char *buf = (char *) cmd->payload;
+ struct cmd_job_pdu *pdu = (struct cmd_job_pdu *) cmd->payload;
+ void *buf = pdu->buf;
struct cmd_start_pdu spdu;
- if (parse_jobs_ini(buf, 1, 0)) {
+ pdu->buf_len = le32_to_cpu(pdu->buf_len);
+ pdu->client_type = le32_to_cpu(pdu->client_type);
+
+ if (parse_jobs_ini(buf, 1, 0, pdu->client_type)) {
fio_server_send_quit_cmd();
return -1;
}
@@ -386,6 +392,7 @@
clp = pdu;
clp->lines = le16_to_cpu(clp->lines);
+ clp->client_type = le16_to_cpu(clp->client_type);
argv = malloc(clp->lines * sizeof(char *));
offset = sizeof(*clp);
@@ -399,7 +406,7 @@
dprint(FD_NET, "server: %d: %s\n", i, argv[i]);
}
- if (parse_cmd_line(clp->lines, argv)) {
+ if (parse_cmd_line(clp->lines, argv, clp->client_type)) {
fio_server_send_quit_cmd();
free(argv);
return -1;