X-Git-Url: https://git.exim.org/users/jgh/exim.git/blobdiff_plain/f6584c83fdb3b168c430b5757209cc71cae10727..1a47b633600e808a11d75551306a2bf8ebf87335:/test/src/fakens.c diff --git a/test/src/fakens.c b/test/src/fakens.c index a03f94a07..7e93979ec 100644 --- a/test/src/fakens.c +++ b/test/src/fakens.c @@ -61,6 +61,9 @@ Any DNS record line in a zone file can be prefixed with "AA " if all the records found by a lookup are marked as such then the response will have the "AA" bit set. +Any DNS record line in a zone file can be prefixed with "TTL=" and +a number of seconds (followed by one space). + */ #include @@ -105,6 +108,8 @@ typedef struct tlist { int value; } tlist; +#define DEFAULT_TTL 3600U + /* On some (older?) operating systems, the standard ns_t_xxx definitions are not available, and only the older T_xxx ones exist in nameser.h. If ns_t_a is not defined, assume we are in this state. A really old system might not even @@ -347,6 +352,7 @@ while (fgets(CS buffer, sizeof(buffer), f) != NULL) BOOL rr_sec = FALSE; BOOL rr_aa = FALSE; int delay = 0; + uint ttl = DEFAULT_TTL; p = buffer; while (isspace(*p)) p++; @@ -380,6 +386,12 @@ while (fgets(CS buffer, sizeof(buffer), f) != NULL) for (p += 6; *p >= '0' && *p <= '9'; p++) delay = delay*10 + *p - '0'; if (isspace(*p)) p++; } + else if (Ustrncmp(p, US"TTL=", 4) == 0) /* TTL for record */ + { + ttl = 0; + for (p += 4; *p >= '0' && *p <= '9'; p++) ttl = ttl*10 + *p - '0'; + if (isspace(*p)) p++; + } else break; } @@ -459,7 +471,10 @@ while (fgets(CS buffer, sizeof(buffer), f) != NULL) *pk++ = 0; *pk++ = 1; /* class = IN */ - pk += 4; /* TTL field; don't care */ + *pk++ = (ttl >>24) & 255; + *pk++ = (ttl >>16) & 255; + *pk++ = (ttl >> 8) & 255; + *pk++ = ttl & 255; rdlptr = pk; /* remember rdlength field */ pk += 2;