From 414f6c80b22b128c25d947d62f6b5d1ec13091b6 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 31 Jan 2005 01:57:58 +0000 Subject: 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) --- source4/nbt_server/nbt_server.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'source4/nbt_server/nbt_server.c') 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); } -- cgit