Removed version number from file header.
[samba.git] / source / nmbd / nmbd_namequery.c
index 57baa4cb2f027cc4376199035c03c4144b63ccd9..aeb9984180de90e38656a1c68f7dff057a289d0c 100644 (file)
@@ -1,6 +1,5 @@
 /* 
-   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;
@@ -39,6 +37,8 @@ static void query_name_response(struct subnet_record *subrec,
                            &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.. */
@@ -52,9 +52,14 @@ static void query_name_response(struct subnet_record *subrec,
     {
       /* 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. */
@@ -66,18 +71,26 @@ name %s on subnet %s.\n", inet_ntoa(p->ip), nmb_namestr(question_name), subrec->
     {
       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,
@@ -87,10 +100,16 @@ for name %s. IP of that name is %s\n", subrec->subnet_name, inet_ntoa(p->ip),
   }
   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
@@ -100,9 +119,9 @@ subnet %s for name %s. This response was from IP %s\n",
   }
   
   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);
 
 }
 
@@ -128,11 +147,14 @@ static void query_name_timeout_response(struct subnet_record *subrec,
 
   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);
@@ -201,8 +223,12 @@ BOOL query_name(struct subnet_record *subrec, char *name, int type,
     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;
     }
 
@@ -214,7 +240,7 @@ BOOL query_name(struct subnet_record *subrec, char *name, int type,
 
     /* 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;
   }
 
@@ -226,8 +252,11 @@ BOOL query_name(struct subnet_record *subrec, char *name, int type,
         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;
@@ -255,8 +284,11 @@ BOOL query_name_from_wins_server(struct in_addr ip_to,
         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;