diff options
author | Volker Lendecke <vl@samba.org> | 2020-04-07 17:26:26 +0200 |
---|---|---|
committer | Ralph Boehme <slow@samba.org> | 2020-04-28 09:08:39 +0000 |
commit | bdabf7812223dc0c365fd13aa53d35d10edcdece (patch) | |
tree | c4e982abbacfcfcdc00f8ee3ecd83b9ddf878950 /ctdb/protocol | |
parent | 6f56f45639e6404161da425bcd2654624907a439 (diff) | |
download | samba-bdabf7812223dc0c365fd13aa53d35d10edcdece.tar.gz |
ctdb-protocol: Add marshalling for control ECHO_DATA
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb/protocol')
-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 | 32 | ||||
-rw-r--r-- | ctdb/protocol/protocol_debug.c | 1 |
4 files changed, 61 insertions, 0 deletions
diff --git a/ctdb/protocol/protocol_api.h b/ctdb/protocol/protocol_api.h index c2cd4a76289..bdb4bc0e2ea 100644 --- a/ctdb/protocol/protocol_api.h +++ b/ctdb/protocol/protocol_api.h @@ -611,6 +611,10 @@ void ctdb_req_control_db_vacuum(struct ctdb_req_control *request, 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); diff --git a/ctdb/protocol/protocol_client.c b/ctdb/protocol/protocol_client.c index 6c5180d6d6d..cde544feb52 100644 --- a/ctdb/protocol/protocol_client.c +++ b/ctdb/protocol/protocol_client.c @@ -2385,3 +2385,27 @@ int ctdb_reply_control_db_vacuum(struct ctdb_reply_control *reply) 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; +} diff --git a/ctdb/protocol/protocol_control.c b/ctdb/protocol/protocol_control.c index a25c9b1cfe0..4fd5a5a7d4d 100644 --- a/ctdb/protocol/protocol_control.c +++ b/ctdb/protocol/protocol_control.c @@ -415,6 +415,10 @@ static size_t ctdb_req_control_data_len(struct ctdb_req_control_data *cd) 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; @@ -698,6 +702,10 @@ static void ctdb_req_control_data_push(struct ctdb_req_control_data *cd, 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; @@ -1035,6 +1043,14 @@ static int ctdb_req_control_data_pull(uint8_t *buf, size_t buflen, &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) { @@ -1398,6 +1414,10 @@ static size_t ctdb_reply_control_data_len(struct ctdb_reply_control_data *cd) case CTDB_CONTROL_DB_VACUUM: break; + + case CTDB_CONTROL_ECHO_DATA: + len = ctdb_echo_data_len(cd->data.echo_data); + break; } return len; @@ -1558,6 +1578,10 @@ static void ctdb_reply_control_data_push(struct ctdb_reply_control_data *cd, case CTDB_CONTROL_DB_VACUUM: break; + + case CTDB_CONTROL_ECHO_DATA: + ctdb_echo_data_push(cd->data.echo_data, buf, &np); + break; } *npush = np; @@ -1748,6 +1772,14 @@ static int ctdb_reply_control_data_pull(uint8_t *buf, size_t buflen, 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) { diff --git a/ctdb/protocol/protocol_debug.c b/ctdb/protocol/protocol_debug.c index 3fe78b13162..56f14e32b09 100644 --- a/ctdb/protocol/protocol_debug.c +++ b/ctdb/protocol/protocol_debug.c @@ -244,6 +244,7 @@ static void ctdb_opcode_print(uint32_t opcode, FILE *fp) { 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, "" }, }; |