mirror of
https://github.com/samba-team/samba.git
synced 2025-02-26 21:57:41 +03:00
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>
This commit is contained in:
parent
b8a0420d10
commit
b783b930de
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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, "" },
|
||||
};
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
. "${TEST_SCRIPTS_DIR}/unit.sh"
|
||||
|
||||
last_control=149
|
||||
last_control=150
|
||||
|
||||
control_output=$(
|
||||
for i in $(seq 0 $last_control) ; do
|
||||
|
@ -596,6 +596,10 @@ static void fill_ctdb_req_control_data(TALLOC_CTX *mem_ctx,
|
||||
cd->data.db_id = rand32();
|
||||
break;
|
||||
|
||||
case CTDB_CONTROL_DB_ATTACH_REPLICATED:
|
||||
fill_ctdb_string(mem_ctx, &cd->data.db_name);
|
||||
assert(cd->data.db_name != NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -996,6 +1000,10 @@ static void verify_ctdb_req_control_data(struct ctdb_req_control_data *cd,
|
||||
assert(cd->data.db_id == cd2->data.db_id);
|
||||
break;
|
||||
|
||||
case CTDB_CONTROL_DB_ATTACH_REPLICATED:
|
||||
verify_ctdb_string(cd->data.db_name, cd2->data.db_name);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1408,6 +1416,10 @@ static void fill_ctdb_reply_control_data(TALLOC_CTX *mem_ctx,
|
||||
cd->data.tdb_flags = rand32();
|
||||
break;
|
||||
|
||||
case CTDB_CONTROL_DB_ATTACH_REPLICATED:
|
||||
cd->data.db_id = rand32();
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1750,6 +1762,10 @@ static void verify_ctdb_reply_control_data(struct ctdb_reply_control_data *cd,
|
||||
assert(cd->data.tdb_flags == cd2->data.tdb_flags);
|
||||
break;
|
||||
|
||||
case CTDB_CONTROL_DB_ATTACH_REPLICATED:
|
||||
assert(cd->data.db_id == cd2->data.db_id);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -2192,7 +2208,7 @@ static void test_ctdb_reply_dmaster(void)
|
||||
talloc_free(mem_ctx);
|
||||
}
|
||||
|
||||
#define NUM_CONTROLS 150
|
||||
#define NUM_CONTROLS 151
|
||||
|
||||
static void test_ctdb_req_control_data(void)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user