Bug Report from www.isc.org: Name: Greg Rabil Email: greg.rabil@bt.com Software Version: DHCP 4.4.1 OS: Linux Subject:Dynamic DNS updates are done via TCP instead of UDP Bug Detail =========== In DHCP 4.3, all dynamic DNS updates are performed using UDP. In DHCP 4.4, that behavior has changed to use TCP. As far as I can tell, this change was not intentional, and instead is a bug caused by changes in the BIND library. In both DHCP 4.3 and 4.4, the common/dns.c source file contains a macro that maps ddns_update to dns_client_startupdate. When the ddns_modify_fwd function calls ddns_update (dns_client_startupdate), it passes DNS_CLIENTRESOPT_ALLOWRUN as the eight argument. The bind/include/dns/client.h file defines DNS_CLIENTRESOPT_ALLOWRUN as 0x02. The problem stems from the change in the implementation of the dns_client_startupdate function between the bind-9.9.11 package in DHCP 4.3 and the bind-9.11.2-p1 package in DHCP 4.4. Specifically, in bind-9.9.11, the implementation of dns_client_startupdate in lib/dns/client.c references the eight parameter (options) only in this line: UNUSED(options); However, in bind-9.11-2-p1, the implementation includes the line above, as well as this line: want_tcp = ISC_TF((options & DNS_CLIENTUPDOPT_TCP) != 0); Note that lib/dns/include/dns/client.h defines DNS_CLIENTUPDOPT_TCP as 0x02, which then sets the 'want_tcp' boolean to true. Since the caller (client.c in DHCP source code) is intending to set DNS_CLIENTRESOPT_ALLOWRUN flag via the options parameter, but not the DNS_CLIENTUPDOPT_TCP flag, this is the source of the problem, and a change in behavior with respect to the DDNS updates using UDP in DHCP 4.3 but TCP in DHCP 4.4. --- This email was received through isc.org Bug Submission Form