/*
- Unix SMB/Netbios implementation.
- Version 1.9.
+ Unix SMB/CIFS implementation.
NBT netbios routines and daemon - version 2
Copyright (C) Andrew Tridgell 1994-1998
Copyright (C) Luke Kenneth Casson Leighton 1994-1998
#include "includes.h"
-extern int DEBUGLEVEL;
-
/****************************************************************************
Deal with a response packet when querying a name.
****************************************************************************/
-static void query_name_response(struct subnet_record *subrec,
- struct response_record *rrec, struct packet_struct *p)
+static void query_name_response( struct subnet_record *subrec,
+ struct response_record *rrec,
+ struct packet_struct *p)
{
struct nmb_packet *nmb = &p->packet.nmb;
BOOL success = False;
&rrec->packet->packet.nmb.question.question_name;
struct in_addr answer_ip;
+ zero_ip(&answer_ip);
+
/* Ensure we don't retry the query but leave the response record cleanup
to the timeout code. We may get more answer responses in which case
we should mark the name in conflict.. */
{
/* WINS server is telling us to wait. Pretend we didn't get
the response but don't send out any more query requests. */
-
- DEBUG(5,("query_name_response: WACK from WINS server %s in querying \
-name %s on subnet %s.\n", inet_ntoa(p->ip), nmb_namestr(question_name), subrec->subnet_name));
+
+ if( DEBUGLVL( 5 ) )
+ {
+ dbgtext( "query_name_response: " );
+ dbgtext( "WACK from WINS server %s ", inet_ntoa(p->ip) );
+ dbgtext( "in querying name %s ", nmb_namestr(question_name) );
+ dbgtext( "on subnet %s.\n", subrec->subnet_name );
+ }
rrec->repeat_count = 0;
/* How long we should wait for. */
{
success = False;
- DEBUG(5,("query_name_response: On subnet %s - negative response \
-from IP %s for name %s. Error code was %d.\n", subrec->subnet_name, inet_ntoa(p->ip),
- nmb_namestr(question_name), nmb->header.rcode));
+ if( DEBUGLVL( 5 ) )
+ {
+ dbgtext( "query_name_response: On subnet %s ", subrec->subnet_name );
+ dbgtext( "- negative response from IP %s ", inet_ntoa(p->ip) );
+ dbgtext( "for name %s. ", nmb_namestr(question_name) );
+ dbgtext( "Error code was %d.\n", nmb->header.rcode );
+ }
}
else
{
success = True;
putip((char *)&answer_ip,&nmb->answers->rdata[2]);
- DEBUG(5,("query_name_response: On subnet %s - positive response from IP %s \
-for name %s. IP of that name is %s\n", subrec->subnet_name, inet_ntoa(p->ip),
- nmb_namestr(question_name), inet_ntoa(answer_ip)));
+ if( DEBUGLVL( 5 ) )
+ {
+ dbgtext( "query_name_response: On subnet %s ", subrec->subnet_name );
+ dbgtext( "- positive response from IP %s ", inet_ntoa(p->ip) );
+ dbgtext( "for name %s. ", nmb_namestr(question_name) );
+ dbgtext( "IP of that name is %s\n", inet_ntoa(answer_ip) );
+ }
/* Interestingly, we could add these names to our namelists, and
change nmbd to a model that checked its own name cache first,
}
else if( rrec->num_msgs > 1)
{
- DEBUG(0,("query_name_response: Multiple (%d) responses received for a query on \
-subnet %s for name %s. This response was from IP %s\n",
- rrec->num_msgs, subrec->subnet_name, nmb_namestr(question_name),
- inet_ntoa(p->ip) ));
+ if( DEBUGLVL( 0 ) )
+ {
+ putip( (char *)&answer_ip, &nmb->answers->rdata[2] );
+ dbgtext( "query_name_response: " );
+ dbgtext( "Multiple (%d) responses ", rrec->num_msgs );
+ dbgtext( "received for a query on subnet %s ", subrec->subnet_name );
+ dbgtext( "for name %s.\nThis response ", nmb_namestr(question_name) );
+ dbgtext( "was from IP %s, reporting", inet_ntoa(p->ip) );
+ dbgtext( "an IP address of %s.\n", inet_ntoa(answer_ip) );
+ }
/* We have already called the success or fail function, so we
don't call again here. Leave the response record around in
}
if(success && rrec->success_fn)
- (*rrec->success_fn)(subrec, rrec->userdata, question_name, answer_ip, nmb->answers);
+ (*(query_name_success_function)rrec->success_fn)(subrec, rrec->userdata, question_name, answer_ip, nmb->answers);
else if( rrec->fail_fn)
- (*rrec->fail_fn)(subrec, rrec, question_name, nmb->header.rcode);
+ (*(query_name_fail_function)rrec->fail_fn)(subrec, rrec, question_name, nmb->header.rcode);
}
if(failed)
{
- DEBUG(5,("query_name_timeout_response: No response to querying name %s on subnet %s.\n",
- nmb_namestr(question_name), subrec->subnet_name));
-
+ if( DEBUGLVL( 5 ) )
+ {
+ dbgtext( "query_name_timeout_response: No response to " );
+ dbgtext( "query for name %s ", nmb_namestr(question_name) );
+ dbgtext( "on subnet %s.\n", subrec->subnet_name );
+ }
if(rrec->fail_fn)
- (*rrec->fail_fn)(subrec, rrec, question_name, 0);
+ (*(query_name_fail_function)rrec->fail_fn)(subrec, rrec, question_name, 0);
}
remove_response_record(subrec, rrec);
rrec.rdlength = namerec->data.num_ips * 6;
if(rrec.rdlength > MAX_DGRAM_SIZE)
{
- DEBUG(0,("query_name: nmbd internal error - there are %d ip addresses for name %s.\n",
- namerec->data.num_ips, nmb_namestr(&nmbname) ));
+ if( DEBUGLVL( 0 ) )
+ {
+ dbgtext( "query_name: nmbd internal error - " );
+ dbgtext( "there are %d ip addresses ", namerec->data.num_ips );
+ dbgtext( "for name %s.\n", nmb_namestr(&nmbname) );
+ }
return False;
}
/* Call the success function directly. */
if(success_fn)
- (*success_fn)(subrec, userdata, &nmbname, namerec->data.ip[0], &rrec);
+ (*(query_name_success_function)success_fn)(subrec, userdata, &nmbname, namerec->data.ip[0], &rrec);
return False;
}
userdata,
&nmbname) == NULL)
{
- DEBUG(0,("query_name: Failed to send packet trying to query name %s\n",
- nmb_namestr(&nmbname)));
+ if( DEBUGLVL( 0 ) )
+ {
+ dbgtext( "query_name: Failed to send packet " );
+ dbgtext( "trying to query name %s\n", nmb_namestr(&nmbname) );
+ }
return True;
}
return False;
userdata,
&nmbname) == NULL)
{
- DEBUG(0,("query_name_from_wins_server: Failed to send packet trying to query name %s\n",
- nmb_namestr(&nmbname)));
+ if( DEBUGLVL( 0 ) )
+ {
+ dbgtext( "query_name_from_wins_server: Failed to send packet " );
+ dbgtext( "trying to query name %s\n", nmb_namestr(&nmbname) );
+ }
return True;
}
return False;