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);
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;
-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)
#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
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
char *source;
char *verb = "is";
char types[20];
- char addrbuff[ADDRSTRLEN];
-
+
if (!log_queries)
return;