summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/nbt_server/config.mk2
-rw-r--r--source4/nbt_server/defense.c1
-rw-r--r--source4/nbt_server/interfaces.c1
-rw-r--r--source4/nbt_server/irpc.c2
-rw-r--r--source4/nbt_server/nbt_server.c2
-rw-r--r--source4/nbt_server/query.c21
-rw-r--r--source4/nbt_server/register.c1
-rw-r--r--source4/nbt_server/wins/winsclient.c1
-rw-r--r--source4/nbt_server/wins/winsserver.c2
-rw-r--r--source4/nbt_server/wins/winsserver.h (renamed from source4/nbt_server/wins/winswack.h)2
-rw-r--r--source4/nbt_server/wins/winswack.c2
11 files changed, 23 insertions, 14 deletions
diff --git a/source4/nbt_server/config.mk b/source4/nbt_server/config.mk
index ac342840ac..a8aab7b2ad 100644
--- a/source4/nbt_server/config.mk
+++ b/source4/nbt_server/config.mk
@@ -17,7 +17,7 @@ OBJ_FILES = \
wins/winsserver.o \
wins/winsclient.o \
wins/winswack.o
-PRIVATE_PROTO_HEADER = wins/winswack_proto.h
+PRIVATE_PROTO_HEADER = wins/winsserver_proto.h
REQUIRED_SUBSYSTEMS = \
LIBCLI_NBT WINSDB
# End SUBSYSTEM NBTD_WINS
diff --git a/source4/nbt_server/defense.c b/source4/nbt_server/defense.c
index 0819fd4f2f..7811c254c0 100644
--- a/source4/nbt_server/defense.c
+++ b/source4/nbt_server/defense.c
@@ -24,6 +24,7 @@
#include "dlinklist.h"
#include "system/network.h"
#include "nbt_server/nbt_server.h"
+#include "nbt_server/wins/winsserver.h"
/*
diff --git a/source4/nbt_server/interfaces.c b/source4/nbt_server/interfaces.c
index 344d1b57d3..41a27fdeb0 100644
--- a/source4/nbt_server/interfaces.c
+++ b/source4/nbt_server/interfaces.c
@@ -25,6 +25,7 @@
#include "nbt_server/nbt_server.h"
#include "smbd/service_task.h"
#include "lib/socket/socket.h"
+#include "nbt_server/wins/winsserver.h"
/*
diff --git a/source4/nbt_server/irpc.c b/source4/nbt_server/irpc.c
index 2e72b8146c..b3b168a8c0 100644
--- a/source4/nbt_server/irpc.c
+++ b/source4/nbt_server/irpc.c
@@ -24,7 +24,7 @@
#include "includes.h"
#include "smbd/service_task.h"
#include "nbt_server/nbt_server.h"
-
+#include "nbt_server/wins/winsserver.h"
/*
serve out the nbt statistics
diff --git a/source4/nbt_server/nbt_server.c b/source4/nbt_server/nbt_server.c
index 3ba06c7df9..5e8d8fb073 100644
--- a/source4/nbt_server/nbt_server.c
+++ b/source4/nbt_server/nbt_server.c
@@ -24,7 +24,7 @@
#include "lib/events/events.h"
#include "smbd/service_task.h"
#include "nbt_server/nbt_server.h"
-
+#include "nbt_server/wins/winsserver.h"
/*
startup the nbtd task
diff --git a/source4/nbt_server/query.c b/source4/nbt_server/query.c
index f71d7b99ed..39300f6e01 100644
--- a/source4/nbt_server/query.c
+++ b/source4/nbt_server/query.c
@@ -24,7 +24,7 @@
#include "dlinklist.h"
#include "system/network.h"
#include "nbt_server/nbt_server.h"
-
+#include "nbt_server/wins/winsserver.h"
/*
answer a name query
@@ -54,25 +54,30 @@ void nbtd_request_query(struct nbt_name_socket *nbtsock,
/* see if we have the requested name on this interface */
name = &packet->questions[0].name;
- if (!(packet->operation & NBT_FLAG_BROADCAST) &&
- (packet->operation & NBT_FLAG_RECURSION_DESIRED)) {
- nbtd_winsserver_request(nbtsock, packet, src);
- return;
- }
-
iname = nbtd_find_iname(iface, name, 0);
-
if (iname == NULL) {
/* don't send negative replies to broadcast queries */
if (packet->operation & NBT_FLAG_BROADCAST) {
return;
}
+ if (packet->operation & NBT_FLAG_RECURSION_DESIRED) {
+ nbtd_winsserver_request(nbtsock, packet, src);
+ return;
+ }
+
/* otherwise send a negative reply */
nbtd_negative_name_query_reply(nbtsock, packet, src);
return;
}
+ if (!(packet->operation & NBT_FLAG_BROADCAST) &&
+ (packet->operation & NBT_FLAG_RECURSION_DESIRED) &&
+ (iname->nb_flags & NBT_NM_GROUP)) {
+ nbtd_winsserver_request(nbtsock, packet, src);
+ return;
+ }
+
/* if the name is not yet active and its a broadcast query then
ignore it for now */
if (!(iname->nb_flags & NBT_NM_ACTIVE) &&
diff --git a/source4/nbt_server/register.c b/source4/nbt_server/register.c
index 74f664ba40..a18e3f4412 100644
--- a/source4/nbt_server/register.c
+++ b/source4/nbt_server/register.c
@@ -27,6 +27,7 @@
#include "smbd/service_task.h"
#include "libcli/composite/composite.h"
#include "librpc/gen_ndr/ndr_samr.h"
+#include "nbt_server/wins/winsserver.h"
static void nbtd_start_refresh_timer(struct nbtd_iface_name *iname);
diff --git a/source4/nbt_server/wins/winsclient.c b/source4/nbt_server/wins/winsclient.c
index 6bf328d146..2538105fb8 100644
--- a/source4/nbt_server/wins/winsclient.c
+++ b/source4/nbt_server/wins/winsclient.c
@@ -22,6 +22,7 @@
#include "includes.h"
#include "nbt_server/nbt_server.h"
+#include "nbt_server/wins/winsserver.h"
#include "libcli/composite/composite.h"
#include "lib/events/events.h"
#include "smbd/service_task.h"
diff --git a/source4/nbt_server/wins/winsserver.c b/source4/nbt_server/wins/winsserver.c
index a456ed06d5..c01ab9a19b 100644
--- a/source4/nbt_server/wins/winsserver.c
+++ b/source4/nbt_server/wins/winsserver.c
@@ -24,7 +24,7 @@
#include "includes.h"
#include "nbt_server/nbt_server.h"
#include "nbt_server/wins/winsdb.h"
-#include "nbt_server/wins/winswack.h"
+#include "nbt_server/wins/winsserver.h"
#include "system/time.h"
#include "libcli/composite/composite.h"
#include "smbd/service_task.h"
diff --git a/source4/nbt_server/wins/winswack.h b/source4/nbt_server/wins/winsserver.h
index 42105f08ff..0ac40e7501 100644
--- a/source4/nbt_server/wins/winswack.h
+++ b/source4/nbt_server/wins/winsserver.h
@@ -34,4 +34,4 @@ struct wins_challenge_io {
} out;
};
-#include "nbt_server/wins/winswack_proto.h"
+#include "nbt_server/wins/winsserver_proto.h"
diff --git a/source4/nbt_server/wins/winswack.c b/source4/nbt_server/wins/winswack.c
index 9e41d14e45..2da73fa9cf 100644
--- a/source4/nbt_server/wins/winswack.c
+++ b/source4/nbt_server/wins/winswack.c
@@ -24,7 +24,7 @@
#include "includes.h"
#include "nbt_server/nbt_server.h"
#include "nbt_server/wins/winsdb.h"
-#include "nbt_server/wins/winswack.h"
+#include "nbt_server/wins/winsserver.h"
#include "system/time.h"
#include "libcli/composite/composite.h"