diff options
author | Amitay Isaacs <amitay@gmail.com> | 2018-02-15 11:57:44 +1100 |
---|---|---|
committer | Amitay Isaacs <amitay@samba.org> | 2019-10-24 04:06:42 +0000 |
commit | b71d8cd80f84169bacf2dd1e753e468a305c50ce (patch) | |
tree | 7dbe47412c94fef343df6cfea0b2f3f7e30a31ea /ctdb | |
parent | 0872c52ef0497f96f53318cf7e4d31be0854adde (diff) | |
download | samba-b71d8cd80f84169bacf2dd1e753e468a305c50ce.tar.gz |
ctdb-protocol: Add marshalling for new control VACUUM_FETCH
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb')
-rw-r--r-- | ctdb/protocol/protocol_api.h | 4 | ||||
-rw-r--r-- | ctdb/protocol/protocol_client.c | 24 | ||||
-rw-r--r-- | ctdb/protocol/protocol_control.c | 22 | ||||
-rw-r--r-- | ctdb/protocol/protocol_debug.c | 1 |
4 files changed, 51 insertions, 0 deletions
diff --git a/ctdb/protocol/protocol_api.h b/ctdb/protocol/protocol_api.h index 6104c10e7b5..cf4c4635dd4 100644 --- a/ctdb/protocol/protocol_api.h +++ b/ctdb/protocol/protocol_api.h @@ -603,6 +603,10 @@ void ctdb_req_control_tunnel_deregister(struct ctdb_req_control *request, uint64_t tunnel_id); int ctdb_reply_control_tunnel_deregister(struct ctdb_reply_control *reply); +void ctdb_req_control_vacuum_fetch(struct ctdb_req_control *request, + struct ctdb_rec_buffer *recbuf); +int ctdb_reply_control_vacuum_fetch(struct ctdb_reply_control *reply); + /* From protocol/protocol_debug.c */ void ctdb_packet_print(uint8_t *buf, size_t buflen, FILE *fp); diff --git a/ctdb/protocol/protocol_client.c b/ctdb/protocol/protocol_client.c index 2617c7a3d9f..09909d39e58 100644 --- a/ctdb/protocol/protocol_client.c +++ b/ctdb/protocol/protocol_client.c @@ -2337,3 +2337,27 @@ int ctdb_reply_control_tunnel_deregister(struct ctdb_reply_control *reply) return reply->status; } + +/* CTDB_CONTROL_VACUUM_FETCH */ + +void ctdb_req_control_vacuum_fetch(struct ctdb_req_control *request, + struct ctdb_rec_buffer *recbuf) +{ + request->opcode = CTDB_CONTROL_VACUUM_FETCH; + request->pad = 0; + request->srvid = 0; + request->client_id = 0; + request->flags = 0; + + request->rdata.opcode = CTDB_CONTROL_VACUUM_FETCH; + request->rdata.data.recbuf = recbuf; +} + +int ctdb_reply_control_vacuum_fetch(struct ctdb_reply_control *reply) +{ + if (reply->rdata.opcode != CTDB_CONTROL_VACUUM_FETCH) { + return EPROTO; + } + + return reply->status; +} diff --git a/ctdb/protocol/protocol_control.c b/ctdb/protocol/protocol_control.c index b2d17611108..1cc985a71a7 100644 --- a/ctdb/protocol/protocol_control.c +++ b/ctdb/protocol/protocol_control.c @@ -407,6 +407,10 @@ static size_t ctdb_req_control_data_len(struct ctdb_req_control_data *cd) case CTDB_CONTROL_TUNNEL_DEREGISTER: break; + + case CTDB_CONTROL_VACUUM_FETCH: + len = ctdb_rec_buffer_len(cd->data.recbuf); + break; } return len; @@ -682,6 +686,10 @@ static void ctdb_req_control_data_push(struct ctdb_req_control_data *cd, case CTDB_CONTROL_CHECK_PID_SRVID: ctdb_pid_srvid_push(cd->data.pid_srvid, buf, &np); break; + + case CTDB_CONTROL_VACUUM_FETCH: + ctdb_rec_buffer_push(cd->data.recbuf, buf, &np); + break; } *npush = np; @@ -1006,6 +1014,11 @@ static int ctdb_req_control_data_pull(uint8_t *buf, size_t buflen, ret = ctdb_pid_srvid_pull(buf, buflen, mem_ctx, &cd->data.pid_srvid, &np); break; + + case CTDB_CONTROL_VACUUM_FETCH: + ret = ctdb_rec_buffer_pull(buf, buflen, mem_ctx, + &cd->data.recbuf, &np); + break; } if (ret != 0) { @@ -1363,6 +1376,9 @@ static size_t ctdb_reply_control_data_len(struct ctdb_reply_control_data *cd) case CTDB_CONTROL_TUNNEL_DEREGISTER: break; + + case CTDB_CONTROL_VACUUM_FETCH: + break; } return len; @@ -1517,6 +1533,9 @@ static void ctdb_reply_control_data_push(struct ctdb_reply_control_data *cd, case CTDB_CONTROL_CHECK_PID_SRVID: break; + + case CTDB_CONTROL_VACUUM_FETCH: + break; } *npush = np; @@ -1701,6 +1720,9 @@ static int ctdb_reply_control_data_pull(uint8_t *buf, size_t buflen, case CTDB_CONTROL_CHECK_PID_SRVID: break; + + case CTDB_CONTROL_VACUUM_FETCH: + break; } if (ret != 0) { diff --git a/ctdb/protocol/protocol_debug.c b/ctdb/protocol/protocol_debug.c index a34f5a86947..97903ea98f4 100644 --- a/ctdb/protocol/protocol_debug.c +++ b/ctdb/protocol/protocol_debug.c @@ -242,6 +242,7 @@ static void ctdb_opcode_print(uint32_t opcode, FILE *fp) { CTDB_CONTROL_CHECK_PID_SRVID, "CHECK_PID_SRVID" }, { CTDB_CONTROL_TUNNEL_REGISTER, "TUNNEL_REGISTER" }, { CTDB_CONTROL_TUNNEL_DEREGISTER, "TUNNEL_DEREGISTER" }, + { CTDB_CONTROL_VACUUM_FETCH, "VACUUM_FETCH" }, { MAP_END, "" }, }; |