Support DHCP DNS server option if we're not doing DNS.

This commit is contained in:
Simon Kelley
2013-02-17 16:41:35 +00:00
parent b0ff858e78
commit a21e27bc99
3 changed files with 7 additions and 2 deletions

View File

@@ -26,6 +26,10 @@ version 2.66
on other platforms. Many thanks to Tomas Hozza for on other platforms. Many thanks to Tomas Hozza for
spotting the problem, and doing invaluable discovery of spotting the problem, and doing invaluable discovery of
the obscure and undocumented API required for the solution. the obscure and undocumented API required for the solution.
Don't send the default DHCP option advertising dnsmasq as
the local DNS server if dnsmasq is configured to not act
as DNS server, or it's configured to a non-standard port.
version 2.65 version 2.65

View File

@@ -2234,7 +2234,8 @@ static void do_options(struct dhcp_context *context,
!option_find2(OPTION_ROUTER)) !option_find2(OPTION_ROUTER))
option_put(mess, end, OPTION_ROUTER, INADDRSZ, ntohl(context->router.s_addr)); option_put(mess, end, OPTION_ROUTER, INADDRSZ, ntohl(context->router.s_addr));
if (in_list(req_options, OPTION_DNSSERVER) && if (daemon->port == NAMESERVER_PORT &&
in_list(req_options, OPTION_DNSSERVER) &&
!option_find2(OPTION_DNSSERVER)) !option_find2(OPTION_DNSSERVER))
option_put(mess, end, OPTION_DNSSERVER, INADDRSZ, ntohl(context->local.s_addr)); option_put(mess, end, OPTION_DNSSERVER, INADDRSZ, ntohl(context->local.s_addr));
} }

View File

@@ -1265,7 +1265,7 @@ static int dhcp6_no_relay(int msg_type, struct in6_addr *link_address, struct dh
end_opt6(o); end_opt6(o);
} }
if (!done_dns && if (daemon->port == NAMESERVER_PORT && !done_dns &&
(!IN6_IS_ADDR_UNSPECIFIED(&context->local6) || (!IN6_IS_ADDR_UNSPECIFIED(&context->local6) ||
!IN6_IS_ADDR_UNSPECIFIED(fallback))) !IN6_IS_ADDR_UNSPECIFIED(fallback)))
{ {