diff --git a/FTL.h b/FTL.h index 5034091a1..0bd0b05f1 100644 --- a/FTL.h +++ b/FTL.h @@ -110,6 +110,10 @@ typedef struct { int SRV; int wildcarddomains; int forwardedqueries; + int reply_NODATA; + int reply_NXDOMAIN; + int reply_CNAME; + int reply_IP; } countersStruct; typedef struct { diff --git a/gc.c b/gc.c index ecb4a4007..7b19ca549 100644 --- a/gc.c +++ b/gc.c @@ -69,6 +69,28 @@ void *GC_thread(void *val) counters.forwardedqueries--; validate_access("forwarded", queries[i].forwardID, true, __LINE__, __FUNCTION__, __FILE__); forwarded[queries[i].forwardID].count--; + // Maybe we have to adjust total counters depending on the reply type + switch(queries[i].reply) + { + case 1: // NODATA(-IPv6) + counters.reply_NODATA--; + break; + + case 2: // NXDOMAIN + counters.reply_NXDOMAIN--; + break; + + case 3: // + counters.reply_CNAME--; + break; + + case 4: // valid IP + counters.reply_IP--; + break; + + default: // Incomplete query, do nothing + break; + } break; case 3: // Answered from local cache _or_ local config diff --git a/parser.c b/parser.c index 49f99061f..fb6625890 100644 --- a/parser.c +++ b/parser.c @@ -916,21 +916,25 @@ void process_pihole_log(int file) { // NODATA(-IPv6) queries[i].reply = 1; + counters.reply_NODATA++; } else if(strstr(readbuffer," is NXDOMAIN") != NULL) { // NXDOMAIN queries[i].reply = 2; + counters.reply_NXDOMAIN++; } else if(strstr(readbuffer," is ") != NULL) { // queries[i].reply = 3; + counters.reply_CNAME++; } else { // Valid IP queries[i].reply = 4; + counters.reply_IP++; // const char * dest = strstr(readbuffer," is "); // char * result; // sscanf(dest, " is %ms", &result);