summaryrefslogtreecommitdiff
path: root/source3/utils/smbcontrol.c
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2017-01-08 16:47:30 +0100
committerVolker Lendecke <vl@samba.org>2017-01-20 22:33:14 +0100
commit98d05dcac39da0a6589f9d47a30c47a650e08470 (patch)
tree4e447661b7cd1cd24d90ee1cc5a8132390cbe9b9 /source3/utils/smbcontrol.c
parenta6bb4e27e76ea583a0ae13569cf0ec78d9849cca (diff)
downloadsamba-98d05dcac39da0a6589f9d47a30c47a650e08470.tar.gz
smbcontrol: add ringbuf-log
Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org> Autobuild-User(master): Volker Lendecke <vl@samba.org> Autobuild-Date(master): Fri Jan 20 22:33:14 CET 2017 on sn-devel-144
Diffstat (limited to 'source3/utils/smbcontrol.c')
-rw-r--r--source3/utils/smbcontrol.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/source3/utils/smbcontrol.c b/source3/utils/smbcontrol.c
index ad602b33d4b..8c0f636957a 100644
--- a/source3/utils/smbcontrol.c
+++ b/source3/utils/smbcontrol.c
@@ -886,6 +886,50 @@ static bool do_poolusage(struct tevent_context *ev_ctx,
return num_replies;
}
+/* Fetch and print the ringbuf log */
+
+static void print_ringbuf_log_cb(struct messaging_context *msg,
+ void *private_data,
+ uint32_t msg_type,
+ struct server_id pid,
+ DATA_BLOB *data)
+{
+ printf("%s", (const char *)data->data);
+ num_replies++;
+}
+
+static bool do_ringbuflog(struct tevent_context *ev_ctx,
+ struct messaging_context *msg_ctx,
+ const struct server_id pid,
+ const int argc, const char **argv)
+{
+ if (argc != 1) {
+ fprintf(stderr, "Usage: smbcontrol <dest> ringbuf-log\n");
+ return false;
+ }
+
+ messaging_register(msg_ctx, NULL, MSG_RINGBUF_LOG,
+ print_ringbuf_log_cb);
+
+ /* Send a message and register our interest in a reply */
+
+ if (!send_message(msg_ctx, pid, MSG_REQ_RINGBUF_LOG, NULL, 0)) {
+ return false;
+ }
+
+ wait_replies(ev_ctx, msg_ctx, procid_to_pid(&pid) == 0);
+
+ /* No replies were received within the timeout period */
+
+ if (num_replies == 0) {
+ printf("No replies received\n");
+ }
+
+ messaging_deregister(msg_ctx, MSG_RINGBUF_LOG, NULL);
+
+ return num_replies != 0;
+}
+
/* Perform a dmalloc mark */
static bool do_dmalloc_mark(struct tevent_context *ev_ctx,
@@ -1385,6 +1429,7 @@ static const struct {
{ "lockretry", do_lockretry, "Force a blocking lock retry" },
{ "brl-revalidate", do_brl_revalidate, "Revalidate all brl entries" },
{ "pool-usage", do_poolusage, "Display talloc memory usage" },
+ { "ringbuf-log", do_ringbuflog, "Display ringbuf log" },
{ "dmalloc-mark", do_dmalloc_mark, "" },
{ "dmalloc-log-changed", do_dmalloc_changed, "" },
{ "shutdown", do_shutdown, "Shut down daemon" },