Hi, a correction of the obfuscated example:
On Fri, Nov 13, 2020 at 09:04:14PM +0100, Ignatios Souvatzis wrote: > > I connect to machines below foo.example.de, which is a convenience domain > otherwise identical to the german-language and much slower to type > fumfiefoebarbaz.example.de, and foo happens to be the two letter acronym > for the english translation of fumfiefoebarbaz. > > In the new world order, the admins have replaced the include file > mess with a DNAME record, redirecting foo.example.de to fumfiefoebarbaz.example.de > This works fine, but the programs on my netbsd machines connecting there > spam the console log with syslog messages about getting DNAME answers > when they expected AAAA and A (which are send as additional info by the > recursive resolver daemon). > > I investigated in the sources, and found that getaddrinfo() and > gethnamaddr() - the latter being the core of the implementation > for gethostbyname() and gethostbyaddr() - special-case T_CNAME, > T_SIG and T_KEY answers in the result returned, but not T_DNAME. > > While a full handling of T_DNAME seems to complicated - we'd need to > splice in the new domain instead of the old in the query - it also > isn't necessary, as the resolver daemon already does all the work - see > > > ;; QUESTION SECTION: > ;qq.foo.example.de. IN A > > ;; ANSWER SECTION: > foo.example.de. 1772 IN DNAME fumfiefoebarbaz.example.de. > qq.foo.example.de. 1772 IN CNAME qq.fumfiefoebarbaz.example.de. > qq.fumfiefoebarbaz.example.de. 3200 IN A 192.0.2.63 > > > So all that remains to do is to suppress the syslog call also in this > case. Patch below; I'll commit unless technical serious objections are > raised (Tested on -9.0_ish machine, compiles on -current, no code > differences). > > Regards > -is > > > Index: include/arpa/nameser_compat.h > =================================================================== > RCS file: /cvsroot/src/include/arpa/nameser_compat.h,v > retrieving revision 1.7 > diff -u -r1.7 nameser_compat.h > --- include/arpa/nameser_compat.h 28 Jun 2020 02:16:19 -0000 1.7 > +++ include/arpa/nameser_compat.h 13 Nov 2020 19:17:44 -0000 > @@ -210,6 +210,7 @@ > #define T_ATMA ns_t_atma > #define T_NAPTR ns_t_naptr > #define T_A6 ns_t_a6 > +#define T_DNAME ns_t_dname > #define T_TSIG ns_t_tsig > #define T_IXFR ns_t_ixfr > #define T_AXFR ns_t_axfr > Index: lib/libc/net/getaddrinfo.c > =================================================================== > RCS file: /cvsroot/src/lib/libc/net/getaddrinfo.c,v > retrieving revision 1.119 > diff -u -r1.119 getaddrinfo.c > --- lib/libc/net/getaddrinfo.c 13 Dec 2018 04:41:41 -0000 1.119 > +++ lib/libc/net/getaddrinfo.c 13 Nov 2020 19:17:45 -0000 > @@ -1821,7 +1821,7 @@ > continue; > } > } else if (type != qtype) { > - if (type != T_KEY && type != T_SIG) { > + if (type != T_KEY && type != T_SIG && type != T_DNAME) { > struct syslog_data sd = SYSLOG_DATA_INIT; > syslog_r(LOG_NOTICE|LOG_AUTH, &sd, > "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"", > Index: lib/libc/net/gethnamaddr.c > =================================================================== > RCS file: /cvsroot/src/lib/libc/net/gethnamaddr.c,v > retrieving revision 1.92 > diff -u -r1.92 gethnamaddr.c > --- lib/libc/net/gethnamaddr.c 22 Sep 2015 16:16:02 -0000 1.92 > +++ lib/libc/net/gethnamaddr.c 13 Nov 2020 19:17:45 -0000 > @@ -358,7 +358,7 @@ > continue; > } > if (type != qtype) { > - if (type != T_KEY && type != T_SIG) > + if (type != T_KEY && type != T_SIG && type != T_DNAME) > syslog(LOG_NOTICE|LOG_AUTH, > "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"", > qname, p_class(C_IN), p_type(qtype),