summaryrefslogtreecommitdiff
path: root/source3/nmbd/nmbd_namequery.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1998-04-20 20:32:50 +0000
committerJeremy Allison <jra@samba.org>1998-04-20 20:32:50 +0000
commitec6fde99ab739ff2c410e5459bba06b06d18b5dc (patch)
treeec5b68a3b311a97c61f6396d7532095c3082c153 /source3/nmbd/nmbd_namequery.c
parent6733e2b36e00ccbe8df363651ecc98ba42d53cee (diff)
downloadsamba-ec6fde99ab739ff2c410e5459bba06b06d18b5dc.tar.gz
samba-ec6fde99ab739ff2c410e5459bba06b06d18b5dc.tar.bz2
samba-ec6fde99ab739ff2c410e5459bba06b06d18b5dc.zip
Fixed bug that John found in WINS server code. When nmbd as a WINS
server is sending out a name_query after a WACK, it needs to send a packet with recursion_desired = 0 (yes Luke, you were right all along :-). If it doesn't then if it's talking to itself then the query packet ends up back in the WINS server instead of in the client side code. Makefile: Changed proto generation to stop including NMBDOBJ twice. nmbd_namequery.c nmbd_packets.c nmbd_winsserver.c: Added extra query_name_from_wins_server() code. Jeremy. (This used to be commit c5ca05c29546053a771f4ea3ef850efb3be970ea)
Diffstat (limited to 'source3/nmbd/nmbd_namequery.c')
-rw-r--r--source3/nmbd/nmbd_namequery.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/source3/nmbd/nmbd_namequery.c b/source3/nmbd/nmbd_namequery.c
index 51f18edd05..1794efe890 100644
--- a/source3/nmbd/nmbd_namequery.c
+++ b/source3/nmbd/nmbd_namequery.c
@@ -232,3 +232,32 @@ BOOL query_name(struct subnet_record *subrec, char *name, int type,
}
return False;
}
+
+/****************************************************************************
+ Try and query for a name from nmbd acting as a WINS server.
+****************************************************************************/
+
+BOOL query_name_from_wins_server(struct in_addr ip_to,
+ char *name, int type,
+ query_name_success_function success_fn,
+ query_name_fail_function fail_fn,
+ struct userdata_struct *userdata)
+{
+ struct nmb_name nmbname;
+
+ make_nmb_name(&nmbname, name, type, scope);
+
+ if(queue_query_name_from_wins_server( ip_to,
+ query_name_response,
+ query_name_timeout_response,
+ success_fn,
+ fail_fn,
+ userdata,
+ &nmbname) == NULL)
+ {
+ DEBUG(0,("query_name_from_wins_server: Failed to send packet trying to query name %s\n",
+ namestr(&nmbname)));
+ return True;
+ }
+ return False;
+}