From 9e11de448d8c1dced72d57ccfbb80c9e45aa2269 Mon Sep 17 00:00:00 2001 From: Amitay Isaacs Date: Thu, 6 Jul 2017 14:04:51 +1000 Subject: ctdb-protocol: Fix marshalling for ctdb_public_ip Signed-off-by: Amitay Isaacs Reviewed-by: Martin Schwenke --- ctdb/tests/src/protocol_types_compat_test.c | 47 +++++++++++++++++++++++++++++ ctdb/tests/src/protocol_types_test.c | 2 +- 2 files changed, 48 insertions(+), 1 deletion(-) (limited to 'ctdb/tests/src') diff --git a/ctdb/tests/src/protocol_types_compat_test.c b/ctdb/tests/src/protocol_types_compat_test.c index ad908d0b515..a69d8d891f6 100644 --- a/ctdb/tests/src/protocol_types_compat_test.c +++ b/ctdb/tests/src/protocol_types_compat_test.c @@ -1166,6 +1166,51 @@ static int ctdb_uptime_pull_old(uint8_t *buf, size_t buflen, return 0; } +static size_t ctdb_public_ip_len_old(struct ctdb_public_ip *in) +{ + return sizeof(struct ctdb_public_ip); +} + +static void ctdb_public_ip_push_old(struct ctdb_public_ip *in, uint8_t *buf) +{ + memcpy(buf, in, sizeof(struct ctdb_public_ip)); +} + +static int ctdb_public_ip_pull_elems_old(uint8_t *buf, size_t buflen, + TALLOC_CTX *mem_ctx, + struct ctdb_public_ip *out) +{ + if (buflen < sizeof(struct ctdb_public_ip)) { + return EMSGSIZE; + } + + memcpy(out, buf, sizeof(struct ctdb_public_ip)); + + return 0; +} + +static int ctdb_public_ip_pull_old(uint8_t *buf, size_t buflen, + TALLOC_CTX *mem_ctx, + struct ctdb_public_ip **out) +{ + struct ctdb_public_ip *val; + int ret; + + val = talloc(mem_ctx, struct ctdb_public_ip); + if (val == NULL) { + return ENOMEM; + } + + ret = ctdb_public_ip_pull_elems_old(buf, buflen, val, val); + if (ret != 0) { + TALLOC_FREE(val); + return ret; + } + + *out = val; + return ret; +} + COMPAT_TYPE3_TEST(struct ctdb_statistics, ctdb_statistics); COMPAT_TYPE3_TEST(struct ctdb_vnn_map, ctdb_vnn_map); @@ -1191,6 +1236,7 @@ COMPAT_TYPE3_TEST(struct ctdb_tickle_list, ctdb_tickle_list); COMPAT_TYPE3_TEST(struct ctdb_addr_info, ctdb_addr_info); COMPAT_TYPE3_TEST(struct ctdb_transdb, ctdb_transdb); COMPAT_TYPE3_TEST(struct ctdb_uptime, ctdb_uptime); +COMPAT_TYPE3_TEST(struct ctdb_public_ip, ctdb_public_ip); int main(int argc, char *argv[]) { @@ -1221,6 +1267,7 @@ int main(int argc, char *argv[]) COMPAT_TEST_FUNC(ctdb_addr_info)(); COMPAT_TEST_FUNC(ctdb_transdb)(); COMPAT_TEST_FUNC(ctdb_uptime)(); + COMPAT_TEST_FUNC(ctdb_public_ip)(); return 0; } diff --git a/ctdb/tests/src/protocol_types_test.c b/ctdb/tests/src/protocol_types_test.c index d17beb47d1e..2360304ccd4 100644 --- a/ctdb/tests/src/protocol_types_test.c +++ b/ctdb/tests/src/protocol_types_test.c @@ -70,7 +70,7 @@ PROTOCOL_TYPE3_TEST(struct ctdb_tickle_list, ctdb_tickle_list); PROTOCOL_TYPE3_TEST(struct ctdb_addr_info, ctdb_addr_info); PROTOCOL_TYPE3_TEST(struct ctdb_transdb, ctdb_transdb); PROTOCOL_TYPE3_TEST(struct ctdb_uptime, ctdb_uptime); -DEFINE_TEST(struct ctdb_public_ip, ctdb_public_ip); +PROTOCOL_TYPE3_TEST(struct ctdb_public_ip, ctdb_public_ip); DEFINE_TEST(struct ctdb_public_ip_list, ctdb_public_ip_list); DEFINE_TEST(struct ctdb_node_and_flags, ctdb_node_and_flags); DEFINE_TEST(struct ctdb_node_map, ctdb_node_map); -- cgit v1.2.1