summaryrefslogtreecommitdiff
path: root/source3/namedbname.c
diff options
context:
space:
mode:
authorSamba Release Account <samba-bugs@samba.org>1996-10-24 17:48:06 +0000
committerSamba Release Account <samba-bugs@samba.org>1996-10-24 17:48:06 +0000
commite010ad006ea1c4754f357951be648b8f45458613 (patch)
tree9d29249ef5dfec1e2884fc1438618800a4aca570 /source3/namedbname.c
parent8a7c1bd3353c03ac7d3dec656772295a7d93b3f0 (diff)
downloadsamba-e010ad006ea1c4754f357951be648b8f45458613.tar.gz
samba-e010ad006ea1c4754f357951be648b8f45458613.tar.bz2
samba-e010ad006ea1c4754f357951be648b8f45458613.zip
dealing with name queries and dns lookups etc.
lkcl (This used to be commit 98cb371244fcb048ad13514140a4ea7243b2b039)
Diffstat (limited to 'source3/namedbname.c')
-rw-r--r--source3/namedbname.c39
1 files changed, 9 insertions, 30 deletions
diff --git a/source3/namedbname.c b/source3/namedbname.c
index d2ce9b1040..8bf6511737 100644
--- a/source3/namedbname.c
+++ b/source3/namedbname.c
@@ -512,24 +512,21 @@ void expire_names(time_t t)
/***************************************************************************
reply to a name query
****************************************************************************/
-struct name_record *search_for_name(struct subnet_record **d,
- struct nmb_name *question,
- struct in_addr ip, int Time, int search)
+struct name_record *dns_name_search(struct nmb_name *question,
+ int Time, int search)
{
+ struct subnet_record *d = find_subnet(ipgrp);
int name_type = question->name_type;
char *qname = question->name;
BOOL dns_type = (name_type == 0x20 || name_type == 0);
-
struct name_record *n;
+ if (d == NULL) return NULL;
+
DEBUG(3,("Search for %s from %s - ", namestr(question), inet_ntoa(ip)));
- /* first look up name in cache */
- n = find_name_search(d,question,search,ip);
-
- if (*d == NULL) return NULL;
-
- if (!n && (search & FIND_SELF)) {
+ if (!n && (search & FIND_SELF))
+ {
if (!lp_wins_proxy())
DEBUG(3,("wins proxy not enabled - failing lookup\n"));
else
@@ -541,7 +538,6 @@ struct name_record *search_for_name(struct subnet_record **d,
if (!n)
{
struct in_addr dns_ip;
- uint32 a;
/* only do DNS lookups if the query is for type 0x20 or type 0x0 */
if (!dns_type && name_type != 0x1b)
@@ -551,11 +547,9 @@ struct name_record *search_for_name(struct subnet_record **d,
}
/* look it up with DNS */
- a = interpret_addr(qname);
-
- putip((char *)&dns_ip,(char *)&a);
+ dns_ip.s_addr = interpret_addr(qname);
- if (!a)
+ if (dns_ip.s_addr)
{
/* no luck with DNS. We could possibly recurse here XXXX */
DEBUG(3,("no recursion.\n"));
@@ -573,21 +567,6 @@ struct name_record *search_for_name(struct subnet_record **d,
if (!n) return NULL;
}
- /* is our entry already dead? */
- if (n->death_time)
- {
- if (n->death_time < Time) return False;
- }
-
- /* it may have been an earlier failure */
- if (n->source == DNSFAIL)
- {
- DEBUG(3,("DNSFAIL\n"));
- return NULL;
- }
-
- DEBUG(3,("OK %s\n",inet_ntoa(n->ip_flgs[0].ip)));
-
return n;
}