diff options
author | Amitay Isaacs <amitay@gmail.com> | 2018-06-21 16:44:02 +1000 |
---|---|---|
committer | Martin Schwenke <martins@samba.org> | 2018-07-05 06:52:44 +0200 |
commit | 8250072a8116e04031e6a161c3bbc2af73fae431 (patch) | |
tree | c313ff03d696f90ed47bfd670acf897e3a76b6ea /ctdb/protocol | |
parent | 0e444c961c0755129d614963fb23cff737cfcaf1 (diff) | |
download | samba-8250072a8116e04031e6a161c3bbc2af73fae431.tar.gz |
ctdb-protocol: Remove protocol for old event daemon
This breaks the build. The new eventd protocol cannot be introduced without
removing the old eventd protocol.
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb/protocol')
-rw-r--r-- | ctdb/protocol/protocol.h | 75 | ||||
-rw-r--r-- | ctdb/protocol/protocol_api.h | 20 | ||||
-rw-r--r-- | ctdb/protocol/protocol_event.c | 920 |
3 files changed, 0 insertions, 1015 deletions
diff --git a/ctdb/protocol/protocol.h b/ctdb/protocol/protocol.h index 7189fab43f0..6abd0158b32 100644 --- a/ctdb/protocol/protocol.h +++ b/ctdb/protocol/protocol.h @@ -1048,79 +1048,4 @@ struct sock_packet_header { uint32_t reqid; }; -/* - * Eventd protocol - */ - -enum ctdb_event_command { - CTDB_EVENT_COMMAND_RUN = 1, - CTDB_EVENT_COMMAND_STATUS = 2, - CTDB_EVENT_COMMAND_SCRIPT_LIST = 3, - CTDB_EVENT_COMMAND_SCRIPT_ENABLE = 4, - CTDB_EVENT_COMMAND_SCRIPT_DISABLE = 5, -}; - -enum ctdb_event_status_state { - CTDB_EVENT_LAST_RUN = 1, - CTDB_EVENT_LAST_PASS = 2, - CTDB_EVENT_LAST_FAIL = 3, -}; - -struct ctdb_event_request_run { - enum ctdb_event event; - uint32_t timeout; - const char *arg_str; -}; - -struct ctdb_event_request_status { - enum ctdb_event event; - enum ctdb_event_status_state state; -}; - -struct ctdb_event_request_script_enable { - const char *script_name; -}; - -struct ctdb_event_request_script_disable { - const char *script_name; -}; - -struct ctdb_event_request_data { - enum ctdb_event_command command; - union { - struct ctdb_event_request_run *run; - struct ctdb_event_request_status *status; - struct ctdb_event_request_script_enable *script_enable; - struct ctdb_event_request_script_disable *script_disable; - } data; -}; - -struct ctdb_event_reply_status { - int status; - struct ctdb_script_list *script_list; -}; - -struct ctdb_event_reply_script_list { - struct ctdb_script_list *script_list; -}; - -struct ctdb_event_reply_data { - enum ctdb_event_command command; - int32_t result; - union { - struct ctdb_event_reply_status *status; - struct ctdb_event_reply_script_list *script_list; - } data; -}; - -struct ctdb_event_request { - struct sock_packet_header header; - struct ctdb_event_request_data rdata; -}; - -struct ctdb_event_reply { - struct sock_packet_header header; - struct ctdb_event_reply_data rdata; -}; - #endif /* __CTDB_PROTOCOL_H__ */ diff --git a/ctdb/protocol/protocol_api.h b/ctdb/protocol/protocol_api.h index 8b40d1d8c0e..1cd5d7d66e6 100644 --- a/ctdb/protocol/protocol_api.h +++ b/ctdb/protocol/protocol_api.h @@ -667,26 +667,6 @@ int ctdb_req_tunnel_pull(uint8_t *buf, size_t buflen, TALLOC_CTX *mem_ctx, struct ctdb_req_tunnel *c); -/* From protocol/protocol_event.c */ - -size_t ctdb_event_request_len(struct ctdb_event_request *in); - -int ctdb_event_request_push(struct ctdb_event_request *in, - uint8_t *buf, size_t *buflen); - -int ctdb_event_request_pull(uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - struct ctdb_event_request *out); - -size_t ctdb_event_reply_len(struct ctdb_event_reply *in); - -int ctdb_event_reply_push(struct ctdb_event_reply *in, - uint8_t *buf, size_t *buflen); - -int ctdb_event_reply_pull(uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - struct ctdb_event_reply *out); - /* From protocol/protocol_packet.c */ int ctdb_allocate_pkt(TALLOC_CTX *mem_ctx, size_t datalen, diff --git a/ctdb/protocol/protocol_event.c b/ctdb/protocol/protocol_event.c deleted file mode 100644 index af6040abd92..00000000000 --- a/ctdb/protocol/protocol_event.c +++ /dev/null @@ -1,920 +0,0 @@ -/* - CTDB eventd protocol marshalling - - Copyright (C) Amitay Isaacs 2016 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see <http://www.gnu.org/licenses/>. -*/ - -#include "replace.h" -#include "system/network.h" - -#include <talloc.h> - -#include "protocol.h" -#include "protocol_private.h" -#include "protocol_api.h" - -static size_t ctdb_event_len(enum ctdb_event in) -{ - uint32_t u32 = in; - - return ctdb_uint32_len(&u32); -} - -static void ctdb_event_push(enum ctdb_event in, uint8_t *buf, size_t *npush) -{ - size_t np; - uint32_t u32 = in; - - ctdb_uint32_push(&u32, buf, &np); - - *npush = np; -} - -static int ctdb_event_pull(uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, enum ctdb_event *out, - size_t *npull) -{ - uint32_t uint32_value; - enum ctdb_event value; - size_t np; - int ret; - - ret = ctdb_uint32_pull(buf, buflen, &uint32_value, &np); - if (ret != 0) { - return ret; - } - - switch (uint32_value) { - case 0: - value = CTDB_EVENT_INIT; - break; - - case 1: - value = CTDB_EVENT_SETUP; - break; - - case 2: - value = CTDB_EVENT_STARTUP; - break; - - case 3: - value = CTDB_EVENT_START_RECOVERY; - break; - - case 4: - value = CTDB_EVENT_RECOVERED; - break; - - case 5: - value = CTDB_EVENT_TAKE_IP; - break; - - case 6: - value = CTDB_EVENT_RELEASE_IP; - break; - - case 7: - value = CTDB_EVENT_STOPPED; - break; - - case 8: - value = CTDB_EVENT_MONITOR; - break; - - case 9: - value = CTDB_EVENT_STATUS; - break; - - case 10: - value = CTDB_EVENT_SHUTDOWN; - break; - - case 11: - value = CTDB_EVENT_RELOAD; - break; - - case 12: - value = CTDB_EVENT_UPDATE_IP; - break; - - case 13: - value = CTDB_EVENT_IPREALLOCATED; - break; - - default: - return EINVAL; - } - - *out = value; - *npull = np; - return 0; -} - -static size_t ctdb_event_command_len(enum ctdb_event_command in) -{ - uint32_t u32 = in; - - return ctdb_uint32_len(&u32); -} - -static void ctdb_event_command_push(enum ctdb_event_command in, uint8_t *buf, - size_t *npush) -{ - size_t np; - uint32_t u32 = in; - - ctdb_uint32_push(&u32, buf, &np); - - *npush = np; -} - -static int ctdb_event_command_pull(uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - enum ctdb_event_command *out, - size_t *npull) -{ - uint32_t uint32_value; - enum ctdb_event_command value; - size_t np; - int ret; - - ret = ctdb_uint32_pull(buf, buflen, &uint32_value, &np); - if (ret != 0) { - return ret; - } - - switch (uint32_value) { - case 1: - value = CTDB_EVENT_COMMAND_RUN; - break; - - case 2: - value = CTDB_EVENT_COMMAND_STATUS; - break; - - case 3: - value = CTDB_EVENT_COMMAND_SCRIPT_LIST; - break; - - case 4: - value = CTDB_EVENT_COMMAND_SCRIPT_ENABLE; - break; - - case 5: - value = CTDB_EVENT_COMMAND_SCRIPT_DISABLE; - break; - - default: - return EINVAL; - } - - *out = value; - *npull = np; - return 0; -} - -static size_t ctdb_event_status_state_len(enum ctdb_event_status_state in) -{ - uint32_t u32 = in; - - return ctdb_uint32_len(&u32); -} - -static void ctdb_event_status_state_push(enum ctdb_event_status_state in, - uint8_t *buf, size_t *npush) -{ - size_t np; - uint32_t u32 = in; - - ctdb_uint32_push(&u32, buf, &np); - - *npush = np; -} - -static int ctdb_event_status_state_pull(uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - enum ctdb_event_status_state *out, - size_t *npull) -{ - uint32_t uint32_value; - enum ctdb_event_status_state value; - size_t np; - int ret; - - ret = ctdb_uint32_pull(buf, buflen, &uint32_value, &np); - if (ret != 0) { - return ret; - } - - switch (uint32_value) { - case 1: - value = CTDB_EVENT_LAST_RUN; - break; - - case 2: - value = CTDB_EVENT_LAST_PASS; - break; - - case 3: - value = CTDB_EVENT_LAST_FAIL; - break; - - default: - return EINVAL; - } - - *out = value; - *npull = np; - return 0; -} - -static size_t ctdb_event_request_run_len(struct ctdb_event_request_run *in) -{ - return ctdb_event_len(in->event) + - ctdb_uint32_len(&in->timeout) + - ctdb_stringn_len(&in->arg_str); -} - -static void ctdb_event_request_run_push(struct ctdb_event_request_run *in, - uint8_t *buf, size_t *npush) -{ - size_t offset = 0, np; - - ctdb_event_push(in->event, buf, &np); - offset += np; - - ctdb_uint32_push(&in->timeout, buf+offset, &np); - offset += np; - - ctdb_stringn_push(&in->arg_str, buf+offset, &np); - offset += np; - - *npush = offset; -} - -static int ctdb_event_request_run_pull(uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - struct ctdb_event_request_run **out, - size_t *npull) -{ - struct ctdb_event_request_run *rdata; - size_t offset = 0, np; - int ret; - - rdata = talloc(mem_ctx, struct ctdb_event_request_run); - if (rdata == NULL) { - return ENOMEM; - } - - ret = ctdb_event_pull(buf, buflen, rdata, &rdata->event, &np); - if (ret != 0) { - goto fail; - } - offset += np; - - ret = ctdb_uint32_pull(buf+offset, buflen-offset, &rdata->timeout, - &np); - if (ret != 0) { - goto fail; - } - offset += np; - - ret = ctdb_stringn_pull(buf+offset, buflen-offset, - rdata, &rdata->arg_str, &np); - if (ret != 0) { - goto fail; - } - offset += np; - - *out = rdata; - *npull = offset; - return 0; - -fail: - talloc_free(rdata); - return ret; -} - -static size_t ctdb_event_request_status_len( - struct ctdb_event_request_status *in) -{ - return ctdb_event_len(in->event) + - ctdb_event_status_state_len(in->state); -} - -static void ctdb_event_request_status_push( - struct ctdb_event_request_status *in, - uint8_t *buf, size_t *npush) -{ - size_t offset = 0, np; - - ctdb_event_push(in->event, buf, &np); - offset += np; - - ctdb_event_status_state_push(in->state, buf+offset, &np); - offset += np; - - *npush = offset; -} - -static int ctdb_event_request_status_pull( - uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - struct ctdb_event_request_status **out, - size_t *npull) -{ - struct ctdb_event_request_status *rdata; - size_t offset = 0, np; - int ret; - - rdata = talloc(mem_ctx, struct ctdb_event_request_status); - if (rdata == NULL) { - return ENOMEM; - } - - ret = ctdb_event_pull(buf, buflen, rdata, &rdata->event, &np); - if (ret != 0) { - talloc_free(rdata); - return ret; - } - offset += np; - - ret = ctdb_event_status_state_pull(buf+offset, buflen-offset, - rdata, &rdata->state, &np); - if (ret != 0) { - talloc_free(rdata); - return ret; - } - offset += np; - - *out = rdata; - *npull = offset; - return 0; -} - -static size_t ctdb_event_request_script_enable_len( - struct ctdb_event_request_script_enable *in) -{ - return ctdb_stringn_len(&in->script_name); -} - -static void ctdb_event_request_script_enable_push( - struct ctdb_event_request_script_enable *in, - uint8_t *buf, size_t *npush) -{ - size_t np; - - ctdb_stringn_push(&in->script_name, buf, &np); - - *npush = np; -} - -static int ctdb_event_request_script_enable_pull( - uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - struct ctdb_event_request_script_enable **out, - size_t *npull) -{ - struct ctdb_event_request_script_enable *rdata; - size_t np; - int ret; - - rdata = talloc(mem_ctx, struct ctdb_event_request_script_enable); - if (rdata == NULL) { - return ENOMEM; - } - - ret = ctdb_stringn_pull(buf, buflen, rdata, &rdata->script_name, &np); - if (ret != 0) { - talloc_free(rdata); - return ret; - } - - *out = rdata; - *npull = np; - return 0; -} - -static size_t ctdb_event_request_script_disable_len( - struct ctdb_event_request_script_disable *in) -{ - return ctdb_stringn_len(&in->script_name); -} - -static void ctdb_event_request_script_disable_push( - struct ctdb_event_request_script_disable *in, - uint8_t *buf, size_t *npush) -{ - size_t np; - - ctdb_stringn_push(&in->script_name, buf, &np); - - *npush = np; -} - -static int ctdb_event_request_script_disable_pull( - uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - struct ctdb_event_request_script_disable **out, - size_t *npull) -{ - struct ctdb_event_request_script_disable *rdata; - size_t np; - int ret; - - rdata = talloc(mem_ctx, struct ctdb_event_request_script_disable); - if (rdata == NULL) { - return ENOMEM; - } - - ret = ctdb_stringn_pull(buf, buflen, rdata, &rdata->script_name, &np); - if (ret != 0) { - talloc_free(rdata); - return ret; - } - - *out = rdata; - *npull = np; - return 0; -} - -static size_t ctdb_event_request_data_len(struct ctdb_event_request_data *in) -{ - size_t len = 0; - - len += ctdb_event_command_len(in->command); - - switch(in->command) { - case CTDB_EVENT_COMMAND_RUN: - len += ctdb_event_request_run_len(in->data.run); - break; - - case CTDB_EVENT_COMMAND_STATUS: - len += ctdb_event_request_status_len(in->data.status); - break; - - case CTDB_EVENT_COMMAND_SCRIPT_LIST: - break; - - case CTDB_EVENT_COMMAND_SCRIPT_ENABLE: - len += ctdb_event_request_script_enable_len( - in->data.script_enable); - break; - - case CTDB_EVENT_COMMAND_SCRIPT_DISABLE: - len += ctdb_event_request_script_disable_len( - in->data.script_disable); - break; - } - - return len; -} - -static void ctdb_event_request_data_push(struct ctdb_event_request_data *in, - uint8_t *buf, size_t *npush) -{ - size_t offset = 0, np; - - ctdb_event_command_push(in->command, buf, &np); - offset += np; - - np = 0; - switch (in->command) { - case CTDB_EVENT_COMMAND_RUN: - ctdb_event_request_run_push(in->data.run, buf+offset, &np); - break; - - case CTDB_EVENT_COMMAND_STATUS: - ctdb_event_request_status_push(in->data.status, buf+offset, - &np); - break; - - case CTDB_EVENT_COMMAND_SCRIPT_LIST: - break; - - case CTDB_EVENT_COMMAND_SCRIPT_ENABLE: - ctdb_event_request_script_enable_push( - in->data.script_enable, - buf+offset, &np); - break; - - case CTDB_EVENT_COMMAND_SCRIPT_DISABLE: - ctdb_event_request_script_disable_push( - in->data.script_disable, - buf+offset, &np); - break; - } - offset += np; - - *npush = offset; -} - -static int ctdb_event_request_data_pull(uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - struct ctdb_event_request_data *out, - size_t *npull) -{ - size_t offset = 0, np; - int ret; - - ret = ctdb_event_command_pull(buf, buflen, mem_ctx, &out->command, - &np); - if (ret != 0) { - return ret; - } - offset += np; - - np = 0; - switch (out->command) { - case CTDB_EVENT_COMMAND_RUN: - ret = ctdb_event_request_run_pull(buf+offset, buflen-offset, - mem_ctx, &out->data.run, - &np); - break; - - case CTDB_EVENT_COMMAND_STATUS: - ret = ctdb_event_request_status_pull( - buf+offset, buflen-offset, - mem_ctx, &out->data.status, - &np); - break; - - case CTDB_EVENT_COMMAND_SCRIPT_LIST: - ret = 0; - break; - - case CTDB_EVENT_COMMAND_SCRIPT_ENABLE: - ret = ctdb_event_request_script_enable_pull( - buf+offset, buflen-offset, - mem_ctx, - &out->data.script_enable, - &np); - break; - - case CTDB_EVENT_COMMAND_SCRIPT_DISABLE: - ret = ctdb_event_request_script_disable_pull( - buf+offset, buflen-offset, - mem_ctx, - &out->data.script_disable, - &np); - break; - } - - if (ret != 0) { - return ret; - } - - offset += np; - - *npull = offset; - return 0; -} - -static size_t ctdb_event_reply_status_len(struct ctdb_event_reply_status *in) -{ - return ctdb_int32_len(&in->status) + - ctdb_script_list_len(in->script_list); -} - -static void ctdb_event_reply_status_push(struct ctdb_event_reply_status *in, - uint8_t *buf, size_t *npush) -{ - size_t offset = 0, np; - - ctdb_int32_push(&in->status, buf, &np); - offset += np; - - ctdb_script_list_push(in->script_list, buf+offset, &np); - offset += np; - - *npush = offset; -} - -static int ctdb_event_reply_status_pull(uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - struct ctdb_event_reply_status **out, - size_t *npull) -{ - struct ctdb_event_reply_status *rdata; - size_t offset = 0, np; - int ret; - - rdata = talloc(mem_ctx, struct ctdb_event_reply_status); - if (rdata == NULL) { - return ENOMEM; - } - - ret = ctdb_int32_pull(buf, buflen, &rdata->status, &np); - if (ret != 0) { - talloc_free(rdata); - return ret; - } - offset += np; - - ret = ctdb_script_list_pull(buf+offset, buflen-offset, - rdata, &rdata->script_list, &np); - if (ret != 0) { - talloc_free(rdata); - return ret; - } - offset += np; - - *out = rdata; - *npull = offset; - return 0; -} - -static size_t ctdb_event_reply_script_list_len( - struct ctdb_event_reply_script_list *in) -{ - return ctdb_script_list_len(in->script_list); -} - -static void ctdb_event_reply_script_list_push( - struct ctdb_event_reply_script_list *in, - uint8_t *buf, size_t *npush) -{ - size_t np; - - ctdb_script_list_push(in->script_list, buf, &np); - - *npush = np; -} - -static int ctdb_event_reply_script_list_pull( - uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - struct ctdb_event_reply_script_list **out, - size_t *npull) -{ - struct ctdb_event_reply_script_list *rdata; - size_t np; - int ret; - - rdata = talloc(mem_ctx, struct ctdb_event_reply_script_list); - if (rdata == NULL) { - return ENOMEM; - } - - ret = ctdb_script_list_pull(buf, buflen, rdata, &rdata->script_list, - &np); - if (ret != 0) { - talloc_free(rdata); - return ret; - } - - *out = rdata; - *npull = np; - return 0; -} - -static size_t ctdb_event_reply_data_len(struct ctdb_event_reply_data *in) -{ - size_t len = 0; - - len += ctdb_event_command_len(in->command); - len += ctdb_int32_len(&in->result); - - switch (in->command) { - case CTDB_EVENT_COMMAND_RUN: - break; - - case CTDB_EVENT_COMMAND_STATUS: - len += ctdb_event_reply_status_len(in->data.status); - break; - - case CTDB_EVENT_COMMAND_SCRIPT_LIST: - len += ctdb_event_reply_script_list_len(in->data.script_list); - break; - - case CTDB_EVENT_COMMAND_SCRIPT_ENABLE: - break; - - case CTDB_EVENT_COMMAND_SCRIPT_DISABLE: - break; - } - - return len; -} - -static void ctdb_event_reply_data_push(struct ctdb_event_reply_data *in, - uint8_t *buf, size_t *npush) -{ - size_t offset = 0, np; - - ctdb_event_command_push(in->command, buf, &np); - offset += np; - - ctdb_int32_push(&in->result, buf+offset, &np); - offset += np; - - np = 0; - switch (in->command) { - case CTDB_EVENT_COMMAND_RUN: - break; - - case CTDB_EVENT_COMMAND_STATUS: - ctdb_event_reply_status_push(in->data.status, buf+offset, &np); - break; - - case CTDB_EVENT_COMMAND_SCRIPT_LIST: - ctdb_event_reply_script_list_push(in->data.script_list, - buf+offset, &np); - break; - - case CTDB_EVENT_COMMAND_SCRIPT_ENABLE: - break; - - case CTDB_EVENT_COMMAND_SCRIPT_DISABLE: - break; - } - offset += np; - - *npush = offset; -} - -static int ctdb_event_reply_data_pull(uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - struct ctdb_event_reply_data *out, - size_t *npull) -{ - size_t offset = 0, np; - int ret; - - ret = ctdb_event_command_pull(buf, buflen, mem_ctx, &out->command, - &np); - if (ret != 0) { - return ret; - } - offset += np; - - ret = ctdb_int32_pull(buf+offset, buflen-offset, &out->result, &np); - if (ret != 0) { - return ret; - } - offset += np; - - np = 0; - switch (out->command) { - case CTDB_EVENT_COMMAND_RUN: - break; - - case CTDB_EVENT_COMMAND_STATUS: - ret = ctdb_event_reply_status_pull( - buf+offset, buflen-offset, - mem_ctx, &out->data.status, &np); - break; - - case CTDB_EVENT_COMMAND_SCRIPT_LIST: - ret = ctdb_event_reply_script_list_pull( - buf+offset, buflen-offset, - mem_ctx, &out->data.script_list, &np); - break; - - case CTDB_EVENT_COMMAND_SCRIPT_ENABLE: - break; - - case CTDB_EVENT_COMMAND_SCRIPT_DISABLE: - break; - } - - if (ret != 0) { - return ret; - } - - offset += np; - - *npull = offset; - return 0; -} - -size_t ctdb_event_request_len(struct ctdb_event_request *in) -{ - return sock_packet_header_len(&in->header) + - ctdb_event_request_data_len(&in->rdata); -} - -int ctdb_event_request_push(struct ctdb_event_request *in, - uint8_t *buf, size_t *buflen) -{ - size_t len, offset = 0, np; - - len = ctdb_event_request_len(in); - if (*buflen < len) { - *buflen = len; - return EMSGSIZE; - } - - in->header.length = *buflen; - - sock_packet_header_push(&in->header, buf, &np); - offset += np; - - ctdb_event_request_data_push(&in->rdata, buf+offset, &np); - offset += np; - - if (offset > *buflen) { - return EMSGSIZE; - } - - return 0; -} - -int ctdb_event_request_pull(uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - struct ctdb_event_request *out) -{ - size_t offset = 0, np; - int ret; - - ret = sock_packet_header_pull(buf, buflen, &out->header, &np); - if (ret != 0) { - return ret; - } - offset += np; - - ret = ctdb_event_request_data_pull(buf+offset, buflen-offset, - mem_ctx, &out->rdata, &np); - if (ret != 0) { - return ret; - } - offset += np; - - if (offset > buflen) { - return EMSGSIZE; - } - - return 0; -} - -size_t ctdb_event_reply_len(struct ctdb_event_reply *in) -{ - return sock_packet_header_len(&in->header) + - ctdb_event_reply_data_len(&in->rdata); -} - -int ctdb_event_reply_push(struct ctdb_event_reply *in, - uint8_t *buf, size_t *buflen) -{ - size_t len, offset = 0, np; - - len = ctdb_event_reply_len(in); - if (*buflen < len) { - *buflen = len; - return EMSGSIZE; - } - - in->header.length = *buflen; - - sock_packet_header_push(&in->header, buf, &np); - offset += np; - - ctdb_event_reply_data_push(&in->rdata, buf+offset, &np); - offset += np; - - if (offset > *buflen) { - return EMSGSIZE; - } - - return 0; -} - -int ctdb_event_reply_pull(uint8_t *buf, size_t buflen, - TALLOC_CTX *mem_ctx, - struct ctdb_event_reply *out) -{ - size_t offset = 0, np; - int ret; - - ret = sock_packet_header_pull(buf, buflen, &out->header, &np); - if (ret != 0) { - return ret; - } - offset += np; - - ret = ctdb_event_reply_data_pull(buf+offset, buflen-offset, - mem_ctx, &out->rdata, &np); - if (ret != 0) { - return ret; - } - offset += np; - - if (offset > buflen) { - return EMSGSIZE; - } - - return 0; -} |