* System defined data types
*/
-size_t ctdb_pid_len(pid_t pid)
+size_t ctdb_pid_len(pid_t *in)
{
return sizeof(pid_t);
}
-void ctdb_pid_push(pid_t pid, uint8_t *buf)
+void ctdb_pid_push(pid_t *in, uint8_t *buf, size_t *npush)
{
- memcpy(buf, &pid, sizeof(pid_t));
+ memcpy(buf, in, sizeof(pid_t));
+ *npush = sizeof(pid_t);
}
-int ctdb_pid_pull(uint8_t *buf, size_t buflen, TALLOC_CTX *mem_ctx,
- pid_t *out)
+int ctdb_pid_pull(uint8_t *buf, size_t buflen, pid_t *out, size_t *npull)
{
if (buflen < sizeof(pid_t)) {
return EMSGSIZE;
}
- *out = *(pid_t *)buf;
+ memcpy(out, buf, sizeof(pid_t));
+ *npull = sizeof(pid_t);
return 0;
}
switch (cd->opcode) {
case CTDB_CONTROL_PROCESS_EXISTS:
- len = ctdb_pid_len(cd->data.pid);
+ len = ctdb_pid_len(&cd->data.pid);
break;
case CTDB_CONTROL_STATISTICS:
switch (cd->opcode) {
case CTDB_CONTROL_PROCESS_EXISTS:
- ctdb_pid_push(cd->data.pid, buf);
+ ctdb_pid_push(&cd->data.pid, buf, &np);
break;
case CTDB_CONTROL_GETDBPATH:
switch (opcode) {
case CTDB_CONTROL_PROCESS_EXISTS:
- ret = ctdb_pid_pull(buf, buflen, mem_ctx,
- &cd->data.pid);
+ ret = ctdb_pid_pull(buf, buflen, &cd->data.pid, &np);
break;
case CTDB_CONTROL_GETDBPATH:
int ctdb_stringn_pull(uint8_t *buf, size_t buflen, TALLOC_CTX *mem_ctx,
const char **out, size_t *npull);
-size_t ctdb_pid_len(pid_t pid);
-void ctdb_pid_push(pid_t pid, uint8_t *buf);
-int ctdb_pid_pull(uint8_t *buf, size_t buflen, TALLOC_CTX *mem_ctx,
- pid_t *out);
+size_t ctdb_pid_len(pid_t *in);
+void ctdb_pid_push(pid_t *in, uint8_t *buf, size_t *npush);
+int ctdb_pid_pull(uint8_t *buf, size_t buflen, pid_t *out, size_t *npull);
/*
* From protocol/protocol_types.c
PROTOCOL_TYPE2_TEST(const char *, ctdb_string);
PROTOCOL_TYPE2_TEST(const char *, ctdb_stringn);
-static void test_ctdb_pid(void)
-{
- pid_t p1, p2;
- size_t buflen;
- int ret;
-
- p1 = rand32();
- buflen = ctdb_pid_len(p1);
- ctdb_pid_push(p1, BUFFER);
- ret = ctdb_pid_pull(BUFFER, buflen, NULL, &p2);
- assert(ret == 0);
- assert(p1 == p2);
-}
+PROTOCOL_TYPE1_TEST(pid_t, ctdb_pid);
int main(int argc, char *argv[])
{
TEST_FUNC(ctdb_string)();
TEST_FUNC(ctdb_stringn)();
- test_ctdb_pid();
+ TEST_FUNC(ctdb_pid)();
return 0;
}
verify_ctdb_string(p1, p2);
}
+void fill_ctdb_pid(pid_t *p)
+{
+ *p = rand32();
+}
+
+void verify_ctdb_pid(pid_t *p1, pid_t *p2)
+{
+ assert(*p1 == *p2);
+}
+
void fill_tdb_data_nonnull(TALLOC_CTX *mem_ctx, TDB_DATA *p)
{
p->dsize = rand_int(1024) + 1;
void fill_ctdb_stringn(TALLOC_CTX *mem_ctx, const char **p);
void verify_ctdb_stringn(const char **p1, const char **p2);
+void fill_ctdb_pid(pid_t *p);
+void verify_ctdb_pid(pid_t *p1, pid_t *p2);
+
void fill_tdb_data_nonnull(TALLOC_CTX *mem_ctx, TDB_DATA *p);
void fill_tdb_data(TALLOC_CTX *mem_ctx, TDB_DATA *p);
void verify_tdb_data(TDB_DATA *p1, TDB_DATA *p2);