summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/nbt_server/nbt_server.c27
-rw-r--r--source4/nbt_server/nbt_server.h4
-rw-r--r--source4/torture/local/irpc.c2
3 files changed, 32 insertions, 1 deletions
diff --git a/source4/nbt_server/nbt_server.c b/source4/nbt_server/nbt_server.c
index 2c76152160..6139b78810 100644
--- a/source4/nbt_server/nbt_server.c
+++ b/source4/nbt_server/nbt_server.c
@@ -27,6 +27,25 @@
/*
+ serve out the nbt statistics
+*/
+static NTSTATUS nbtd_information(struct irpc_message *msg,
+ struct nbtd_information *r)
+{
+ struct nbtd_server *server = talloc_get_type(msg->private, struct nbtd_server);
+
+ switch (r->in.level) {
+ case NBTD_INFO_STATISTICS:
+ r->out.info.stats = &server->stats;
+ break;
+ }
+
+ return NT_STATUS_OK;
+}
+
+
+
+/*
startup the nbtd task
*/
static void nbtd_task_init(struct task_server *task)
@@ -64,6 +83,14 @@ static void nbtd_task_init(struct task_server *task)
return;
}
+ /* setup monitoring */
+ status = IRPC_REGISTER(task->msg_ctx, irpc, NBTD_INFORMATION,
+ nbtd_information, nbtsrv);
+ if (!NT_STATUS_IS_OK(status)) {
+ task_terminate(task, "nbtd failed to setup monitoring");
+ return;
+ }
+
/* start the process of registering our names on all interfaces */
nbtd_register_names(nbtsrv);
}
diff --git a/source4/nbt_server/nbt_server.h b/source4/nbt_server/nbt_server.h
index e2b8584f5a..b9ed265b88 100644
--- a/source4/nbt_server/nbt_server.h
+++ b/source4/nbt_server/nbt_server.h
@@ -22,6 +22,8 @@
#include "libcli/nbt/libnbt.h"
#include "libcli/dgram/libdgram.h"
+#include "librpc/gen_ndr/ndr_irpc.h"
+#include "lib/messaging/irpc.h"
/*
a list of our registered names on each interface
@@ -70,6 +72,8 @@ struct nbtd_server {
struct nbtd_interface *wins_interface;
struct wins_server *winssrv;
+
+ struct nbtd_statistics stats;
};
diff --git a/source4/torture/local/irpc.c b/source4/torture/local/irpc.c
index 65564fc7b7..9e4527ee7c 100644
--- a/source4/torture/local/irpc.c
+++ b/source4/torture/local/irpc.c
@@ -150,7 +150,7 @@ BOOL torture_local_irpc(void)
msg_ctx = messaging_init(mem_ctx, MSG_ID, ev);
/* register the server side function */
- IRPC_REGISTER(msg_ctx, rpcecho, ECHO_ADDONE, irpc_AddOne);
+ IRPC_REGISTER(msg_ctx, rpcecho, ECHO_ADDONE, irpc_AddOne, NULL);
ret &= test_addone(mem_ctx, msg_ctx);
ret &= test_speed(mem_ctx, msg_ctx, ev);