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);
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)
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)
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;
.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)) {