diff options
author | Amitay Isaacs <amitay@gmail.com> | 2017-03-02 17:07:13 +1100 |
---|---|---|
committer | Martin Schwenke <martins@samba.org> | 2017-06-29 10:34:27 +0200 |
commit | b783b930de52554457647258bd4d843db912a38b (patch) | |
tree | 6a42ca7cbd224b11db285b43892e9be860864fd6 /ctdb/protocol | |
parent | b8a0420d10021c5521335f81effaeb28f43fd307 (diff) | |
download | samba-b783b930de52554457647258bd4d843db912a38b.tar.gz |
ctdb-protocol: Add marshalling for CTDB_CONTROL_DB_ATTACH_REPLICATED control
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_api.h | 5 | ||||
-rw-r--r-- | ctdb/protocol/protocol_client.c | 27 | ||||
-rw-r--r-- | ctdb/protocol/protocol_control.c | 26 | ||||
-rw-r--r-- | ctdb/protocol/protocol_debug.c | 1 |
4 files changed, 59 insertions, 0 deletions
diff --git a/ctdb/protocol/protocol_api.h b/ctdb/protocol/protocol_api.h index 5666069787c..a8875446a7c 100644 --- a/ctdb/protocol/protocol_api.h +++ b/ctdb/protocol/protocol_api.h @@ -601,6 +601,11 @@ void ctdb_req_control_db_open_flags(struct ctdb_req_control *request, int ctdb_reply_control_db_open_flags(struct ctdb_reply_control *reply, int *tdb_flags); +void ctdb_req_control_db_attach_replicated(struct ctdb_req_control *request, + const char *db_name); +int ctdb_reply_control_db_attach_replicated(struct ctdb_reply_control *reply, + uint32_t *db_id); + /* 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 018e1578fcb..daa70cc513b 100644 --- a/ctdb/protocol/protocol_client.c +++ b/ctdb/protocol/protocol_client.c @@ -2359,3 +2359,30 @@ int ctdb_reply_control_db_open_flags(struct ctdb_reply_control *reply, } return reply->status; } + +/* CTDB_CONTROL_DB_ATTACH_REPLICATED */ + +void ctdb_req_control_db_attach_replicated(struct ctdb_req_control *request, + const char *db_name) +{ + request->opcode = CTDB_CONTROL_DB_ATTACH_REPLICATED; + request->pad = 0; + request->srvid = 0; + request->client_id = 0; + request->flags = 0; + + request->rdata.opcode = CTDB_CONTROL_DB_ATTACH_REPLICATED; + request->rdata.data.db_name = db_name; +} + +int ctdb_reply_control_db_attach_replicated(struct ctdb_reply_control *reply, + uint32_t *db_id) +{ + if (reply->rdata.opcode != CTDB_CONTROL_DB_ATTACH_REPLICATED) { + return EPROTO; + } + if (reply->status == 0) { + *db_id = reply->rdata.data.db_id; + } + return reply->status; +} diff --git a/ctdb/protocol/protocol_control.c b/ctdb/protocol/protocol_control.c index f54281300b0..3c5c7ce93cf 100644 --- a/ctdb/protocol/protocol_control.c +++ b/ctdb/protocol/protocol_control.c @@ -430,6 +430,10 @@ static size_t ctdb_req_control_data_len(struct ctdb_req_control_data *cd) case CTDB_CONTROL_DB_OPEN_FLAGS: len = ctdb_uint32_len(cd->data.db_id); break; + + case CTDB_CONTROL_DB_ATTACH_REPLICATED: + len = ctdb_string_len(cd->data.db_name); + break; } return len; @@ -697,6 +701,10 @@ static void ctdb_req_control_data_push(struct ctdb_req_control_data *cd, case CTDB_CONTROL_DB_OPEN_FLAGS: ctdb_uint32_push(cd->data.db_id, buf); break; + + case CTDB_CONTROL_DB_ATTACH_REPLICATED: + ctdb_string_push(cd->data.db_name, buf); + break; } } @@ -1032,6 +1040,11 @@ static int ctdb_req_control_data_pull(uint8_t *buf, size_t buflen, ret = ctdb_uint32_pull(buf, buflen, mem_ctx, &cd->data.db_id); break; + + case CTDB_CONTROL_DB_ATTACH_REPLICATED: + ret = ctdb_string_pull(buf, buflen, mem_ctx, + &cd->data.db_name); + break; } return ret; @@ -1397,6 +1410,10 @@ static size_t ctdb_reply_control_data_len(struct ctdb_reply_control_data *cd) case CTDB_CONTROL_DB_OPEN_FLAGS: len = ctdb_int32_len(cd->data.tdb_flags); break; + + case CTDB_CONTROL_DB_ATTACH_REPLICATED: + len = ctdb_uint32_len(cd->data.db_id); + break; } return len; @@ -1553,6 +1570,10 @@ static void ctdb_reply_control_data_push(struct ctdb_reply_control_data *cd, case CTDB_CONTROL_DB_OPEN_FLAGS: ctdb_int32_push(cd->data.tdb_flags, buf); break; + + case CTDB_CONTROL_DB_ATTACH_REPLICATED: + ctdb_uint32_push(cd->data.db_id, buf); + break; } } @@ -1745,6 +1766,11 @@ static int ctdb_reply_control_data_pull(uint8_t *buf, size_t buflen, ret = ctdb_int32_pull(buf, buflen, mem_ctx, &cd->data.tdb_flags); break; + + case CTDB_CONTROL_DB_ATTACH_REPLICATED: + ret = ctdb_uint32_pull(buf, buflen, mem_ctx, + &cd->data.db_id); + break; } return ret; diff --git a/ctdb/protocol/protocol_debug.c b/ctdb/protocol/protocol_debug.c index 10aa5edff8c..574f903b2c0 100644 --- a/ctdb/protocol/protocol_debug.c +++ b/ctdb/protocol/protocol_debug.c @@ -238,6 +238,7 @@ static void ctdb_opcode_print(uint32_t opcode, FILE *fp) { CTDB_CONTROL_DB_PUSH_START, "DB_PUSH_START" }, { CTDB_CONTROL_DB_PUSH_CONFIRM, "DB_PUSH_CONFIRM" }, { CTDB_CONTROL_DB_OPEN_FLAGS, "DB_OPEN_FLAGS" }, + { CTDB_CONTROL_DB_ATTACH_REPLICATED, "DB_ATTACH_REPLICATED" }, { MAP_END, "" }, }; |