summaryrefslogtreecommitdiff
path: root/source4/nbt_server/nbt_server.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-01-31 01:57:58 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:09:23 -0500
commit414f6c80b22b128c25d947d62f6b5d1ec13091b6 (patch)
treeda147a6c2802a7af79b5dfcdf3d3f6508287520e /source4/nbt_server/nbt_server.c
parent37449657a8d335097b3f3559f8b5bf084b50b85a (diff)
downloadsamba-414f6c80b22b128c25d947d62f6b5d1ec13091b6.tar.gz
samba-414f6c80b22b128c25d947d62f6b5d1ec13091b6.tar.bz2
samba-414f6c80b22b128c25d947d62f6b5d1ec13091b6.zip
r5114: the nbtd task can now act as a basic B-node server. It registers its
names on the network and answers name queries. Lots of details are still missing, but at least this now means you don't need a Samba3 nmbd to use Samba4. missing pieces include: - name registrations should be "shout 3 times, then demand" - no WINS server yet - no master browser code (This used to be commit d7d31fdc6670f026f96b50e51a4de19f0b920e5b)
Diffstat (limited to 'source4/nbt_server/nbt_server.c')
-rw-r--r--source4/nbt_server/nbt_server.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/source4/nbt_server/nbt_server.c b/source4/nbt_server/nbt_server.c
index d05a31e421..603ec2a583 100644
--- a/source4/nbt_server/nbt_server.c
+++ b/source4/nbt_server/nbt_server.c
@@ -22,7 +22,6 @@
#include "includes.h"
#include "events.h"
-#include "libcli/nbt/libnbt.h"
#include "smbd/service_task.h"
#include "nbt_server/nbt_server.h"
@@ -36,9 +35,12 @@ static void nbt_request_handler(struct nbt_name_socket *nbtsock,
{
struct nbt_interface *iface = talloc_get_type(nbtsock->incoming.private,
struct nbt_interface);
- DEBUG(0,("nbtd request from %s:%d\n", src_address, src_port));
- NDR_PRINT_DEBUG(nbt_name_packet, packet);
+ switch (packet->operation & NBT_OPCODE) {
+ case NBT_OPCODE_QUERY:
+ nbt_request_query(nbtsock, packet, src_address, src_port);
+ break;
+ }
}
@@ -57,8 +59,9 @@ static void nbtd_task_init(struct task_server *task)
return;
}
- nbtsrv->task = task;
- nbtsrv->interfaces = NULL;
+ nbtsrv->task = task;
+ nbtsrv->interfaces = NULL;
+ nbtsrv->bcast_interface = NULL;
/* start listening on the configured network interfaces */
status = nbt_startup_interfaces(nbtsrv);
@@ -71,6 +74,11 @@ static void nbtd_task_init(struct task_server *task)
for (iface=nbtsrv->interfaces;iface;iface=iface->next) {
nbt_set_incoming_handler(iface->nbtsock, nbt_request_handler, iface);
}
+ nbt_set_incoming_handler(nbtsrv->bcast_interface->nbtsock, nbt_request_handler,
+ nbtsrv->bcast_interface);
+
+ /* start the process of registering our names on all interfaces */
+ nbt_register_names(nbtsrv);
}