]> git.ipfire.org Git - people/ms/dnsmasq.git/blobdiff - src/cache.c
import of dnsmasq-2.28.tar.gz
[people/ms/dnsmasq.git] / src / cache.c
index 8221f41eac6e0565baed06cfae75e824d3194cb0..efdf3bc25054feda44b70e00ec350fc5ac5afdb1 100644 (file)
@@ -18,6 +18,7 @@ static int cache_inserted, cache_live_freed, insert_error;
 static union bigname *big_free;
 static int bignames_left, log_queries, cache_size, hash_size;
 static int uid;
+static char *addrbuff;
 
 static void cache_free(struct crec *crecp);
 static void cache_unlink(struct crec *crecp);
@@ -29,7 +30,11 @@ void cache_init(int size, int logq)
   struct crec *crecp;
   int i;
 
-  log_queries = logq;
+  if ((log_queries = logq))
+    addrbuff = safe_malloc(ADDRSTRLEN);
+  else
+    addrbuff = NULL;
+      
   cache_head = cache_tail = NULL;
   dhcp_inuse = dhcp_spare = NULL;
   new_chain = NULL;
@@ -762,17 +767,17 @@ void cache_add_dhcp_entry(struct daemon *daemon, char *host_name,
 
 
 
-void dump_cache(struct daemon *daemon)
+void dump_cache(struct daemon *daemon, time_t now)
 {
-  syslog(LOG_INFO, _("cache size %d, %d/%d cache insertions re-used unexpired cache entries."), 
-        daemon->cachesize, cache_live_freed, cache_inserted); 
+  syslog(LOG_INFO, _("time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache entries."), 
+        (unsigned long)now, daemon->cachesize, cache_live_freed, cache_inserted); 
   
-  if (daemon->options & (OPT_DEBUG | OPT_LOG))
+  if ((daemon->options & (OPT_DEBUG | OPT_LOG)) &&
+      (addrbuff || (addrbuff = malloc(ADDRSTRLEN))))
     {
       struct crec *cache ;
-      char addrbuff[ADDRSTRLEN];
       int i;
-      syslog(LOG_DEBUG, "Host                                     Address                        Flags     Expires\n");
+      syslog(LOG_DEBUG, "Host                                     Address                        Flags     Expires");
     
       for (i=0; i<hash_size; i++)
        for (cache = hash_table[i]; cache; cache = cache->hash_next)
@@ -797,7 +802,7 @@ void dump_cache(struct daemon *daemon)
 #endif
            syslog(LOG_DEBUG, 
 #ifdef HAVE_BROKEN_RTC
-                  "%-40.40s %-30.30s %s%s%s%s%s%s%s%s%s%s  %ld\n",
+                  "%-40.40s %-30.30s %s%s%s%s%s%s%s%s%s%s  %lu",
 #else
                   "%-40.40s %-30.30s %s%s%s%s%s%s%s%s%s%s  %s",
 #endif
@@ -813,7 +818,7 @@ void dump_cache(struct daemon *daemon)
                   cache->flags & F_NXDOMAIN ? "X" : " ",
                   cache->flags & F_HOSTS ? "H" : " ",
 #ifdef HAVE_BROKEN_RTC
-                  cache->flags & F_IMMORTAL ? 0: (unsigned long)cache->ttd
+                  cache->flags & F_IMMORTAL ? 0: (unsigned long)(cache->ttd - now)
 #else
                   cache->flags & F_IMMORTAL ? "\n" : ctime(&(cache->ttd)) 
 #endif
@@ -844,8 +849,7 @@ void log_query(unsigned short flags, char *name, struct all_addr *addr,
   char *source;
   char *verb = "is";
   char types[20];
-  char addrbuff[ADDRSTRLEN];
-
+  
   if (!log_queries)
     return;