Hi, 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 fumfiefoebarbaz.example.de to foo.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),