ctdbd_conn: Move ndr marshalling to messages_ctdb.c
authorVolker Lendecke <vl@samba.org>
Wed, 20 May 2015 09:17:25 +0000 (11:17 +0200)
committerVolker Lendecke <vl@samba.org>
Thu, 28 May 2015 09:13:09 +0000 (11:13 +0200)
The inter-node message format belongs into messages_ctdb, not into the
generic ctdb connection layer

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
source3/include/ctdbd_conn.h
source3/lib/ctdb_dummy.c
source3/lib/ctdbd_conn.c
source3/lib/messages_ctdbd.c

index 13889fc8be8fbe76377f119b73dab0fdac0d4c8a..6b3ebf1cd7ac5a13015a381d0ecc00ffec704c28 100644 (file)
@@ -38,9 +38,6 @@ struct messaging_context *ctdb_conn_msg_ctx(struct ctdbd_connection *conn);
 
 int ctdbd_conn_get_fd(struct ctdbd_connection *conn);
 
-NTSTATUS ctdbd_messaging_send(struct ctdbd_connection *conn,
-                             uint32_t dst_vnn, uint64_t dst_srvid,
-                             struct messaging_rec *msg);
 NTSTATUS ctdbd_messaging_send_blob(struct ctdbd_connection *conn,
                                   uint32_t dst_vnn, uint64_t dst_srvid,
                                   const uint8_t *buf, size_t buflen);
index 50de9ad72a05b8dec5683c10a848e6971107d609..a3af03089dbb38a4d6464265fd95b034a7fe3bbe 100644 (file)
@@ -30,13 +30,6 @@ NTSTATUS ctdbd_probe(void)
        return NT_STATUS_NOT_IMPLEMENTED;
 }
 
-NTSTATUS ctdbd_messaging_send(struct ctdbd_connection *conn,
-                             uint32_t dst_vnn, uint64_t dst_srvid,
-                             struct messaging_rec *msg)
-{
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
 NTSTATUS ctdbd_messaging_send_blob(struct ctdbd_connection *conn,
                                   uint32_t dst_vnn, uint64_t dst_srvid,
                                   const uint8_t *buf, size_t buflen)
index a1e44ac1a4b712cf2d5c6e45d94b5979a2c61d43..576cec1fbc01411fba977abd737f27b94a78db6b 100644 (file)
@@ -608,34 +608,6 @@ NTSTATUS ctdbd_register_msg_ctx(struct ctdbd_connection *conn,
        return NT_STATUS_OK;
 }
 
-/*
- * Send a messaging message across a ctdbd
- */
-
-NTSTATUS ctdbd_messaging_send(struct ctdbd_connection *conn,
-                             uint32_t dst_vnn, uint64_t dst_srvid,
-                             struct messaging_rec *msg)
-{
-       DATA_BLOB blob;
-       NTSTATUS status;
-       enum ndr_err_code ndr_err;
-
-       ndr_err = ndr_push_struct_blob(
-               &blob, talloc_tos(), msg,
-               (ndr_push_flags_fn_t)ndr_push_messaging_rec);
-
-       if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-               DEBUG(0, ("ndr_push_struct_blob failed: %s\n",
-                         ndr_errstr(ndr_err)));
-               return ndr_map_error2ntstatus(ndr_err);
-       }
-
-       status = ctdbd_messaging_send_blob(conn, dst_vnn, dst_srvid,
-                                          blob.data, blob.length);
-       TALLOC_FREE(blob.data);
-       return status;
-}
-
 NTSTATUS ctdbd_messaging_send_blob(struct ctdbd_connection *conn,
                                   uint32_t dst_vnn, uint64_t dst_srvid,
                                   const uint8_t *buf, size_t buflen)
index 430dc51dbffb606da3234a57f9803ec5acb337a4..840b1ea93b0456586af2e51c5956066f0c04c910 100644 (file)
@@ -83,7 +83,9 @@ static int messaging_ctdb_send(struct server_id src,
        struct messaging_rec msg;
        uint8_t *buf;
        ssize_t buflen;
+       DATA_BLOB blob;
        NTSTATUS status;
+       enum ndr_err_code ndr_err;
 
        if (num_fds > 0) {
                return ENOSYS;
@@ -108,8 +110,19 @@ static int messaging_ctdb_send(struct server_id src,
                .buf            = data_blob_const(buf, talloc_get_size(buf)),
        };
 
-       status = ctdbd_messaging_send(ctx->conn, pid.vnn, pid.pid, &msg);
+       ndr_err = ndr_push_struct_blob(
+               &blob, buf, &msg,
+               (ndr_push_flags_fn_t)ndr_push_messaging_rec);
+
+       if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+               DEBUG(0, ("ndr_push_struct_blob failed: %s\n",
+                         ndr_errstr(ndr_err)));
+               TALLOC_FREE(buf);
+               return ndr_map_error2errno(ndr_err);
+       }
 
+       status = ctdbd_messaging_send_blob(ctx->conn, pid.vnn, pid.pid,
+                                          blob.data, blob.length);
        TALLOC_FREE(buf);
 
        if (NT_STATUS_IS_OK(status)) {