notifyd: Add notifydd
authorVolker Lendecke <vl@samba.org>
Tue, 16 Jun 2015 14:57:14 +0000 (14:57 +0000)
committerJeremy Allison <jra@samba.org>
Tue, 7 Jul 2015 21:51:24 +0000 (23:51 +0200)
A little standalone notify daemon to play around with.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/smbd/notifyd/notifydd.c [new file with mode: 0644]
source3/smbd/notifyd/wscript_build

diff --git a/source3/smbd/notifyd/notifydd.c b/source3/smbd/notifyd/notifydd.c
new file mode 100644 (file)
index 0000000..6856b3e
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Unix SMB/CIFS implementation.
+ *
+ * Copyright (C) Volker Lendecke 2014
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "replace.h"
+#include "notifyd.h"
+#include <tevent.h>
+#include "lib/util/tevent_unix.h"
+
+int main(int argc, const char *argv[])
+{
+       TALLOC_CTX *frame;
+       struct tevent_context *ev;
+       struct messaging_context *msg;
+       struct tevent_req *req;
+       int err, ret;
+       bool ok;
+
+       talloc_enable_leak_report_full();
+
+       frame = talloc_stackframe();
+
+       setup_logging("notifyd", DEBUG_DEFAULT_STDOUT);
+       lp_set_cmdline("log level", "10");
+
+       lp_load_initial_only(get_dyn_CONFIGFILE());
+
+       ev = samba_tevent_context_init(frame);
+       if (ev == NULL) {
+               fprintf(stderr, "samba_tevent_context_init failed\n");
+               return 1;
+       }
+
+       msg = messaging_init(ev, ev);
+       if (msg == NULL) {
+               fprintf(stderr, "messaging_init failed\n");
+               return 1;
+       }
+
+       if (!lp_load_global(get_dyn_CONFIGFILE())) {
+               fprintf(stderr, "Can't load %s - run testparm to debug it\n",
+                       get_dyn_CONFIGFILE());
+               return 1;
+       }
+
+       req = notifyd_send(ev, ev, msg, messaging_ctdbd_connection(),
+                          NULL, NULL);
+       if (req == NULL) {
+               fprintf(stderr, "notifyd_send failed\n");
+               return 1;
+       }
+
+       ok = tevent_req_poll_unix(req, ev, &err);
+       if (!ok) {
+               fprintf(stderr, "tevent_req_poll_unix failed: %s\n",
+                       strerror(err));
+               return 1;
+       }
+
+       ret = notifyd_recv(req);
+
+       printf("notifyd_recv returned %d (%s)\n", ret,
+              ret ? strerror(ret) : "ok");
+
+       TALLOC_FREE(frame);
+
+       return 0;
+}
index 90a9505e4acc9a691d492358599db9a294eff7dd..d9976bd521c7ae3852785697c37e80a1e391eba8 100644 (file)
@@ -10,3 +10,10 @@ bld.SAMBA3_BINARY('notifyd-tests',
                   deps='''
                     param
                   ''')
+
+bld.SAMBA3_BINARY('notifydd',
+                  source='notifydd.c',
+                  install=False,
+                  deps='''notifyd
+                    param
+                  ''')