Hi Nathan, thanks for sharing your patch. I'm the author of patch #3828, but I haven't been able to access it at: http://patchwork.openwrt.org/patch/3828/ and I don't have a local copy of it.
So I relied on your patch and it seems to work flawlessly. Also, you said: The patch (#3828) works well for a single hostname; however, if multiple > names are specified, dhcp_host_add generates an invalid "dhcp-host" option. I'm not sure what you mean, but I recall my original patch worked for more than one name (ie. more than one host on my LAN network: computerA.lan, computerB.lan, etc.), and it generated the same output that your patch generates. That is: address=/computerA/computerA.lan/10.0.0.2 address=/computerB/computerB.lan/10.0.0.3 Thanks again. On Sun, Sep 8, 2013 at 9:21 PM, Nathan Hintz <nlhi...@hotmail.com> wrote: > On Wed, 28 Aug 2013 15:05:35 -0600 > "Philip A. Prindeville" <philipp_s...@redfish-solutions.com> wrote: > > > I should have sent this AFTER trying out patch 3828. > > > > Julian's patch is even simpler than my suggestion. > > > > On 08/28/2013 02:42 PM, Philip A. Prindeville wrote: > > > Sorry if it's a little after-the-fact, but I've been wondering > > > about the need to have a separate "config domain" section at all. > > > > > > Why not just have something like: > > > > > > config host > > > ... > > > option wants-dns-rr on > > > > > > Yes, "config domain" is still useful for external sites or for > > > resources with static addresses that aren't served by dnsmasq, buy > > > why not reduce the amount of configuration for a host to have a > > > A/PTR pair to a single line? > > > > > > For that matter, in the "config dnsmasq" section, why not have an > > > option like "option publish-dns-rr on" and enable it globally for > > > all host blocks? > > > > > > Am I missing something? > > > > > > -Philip > > > > > > > > > On 06/04/2013 10:44 PM, Adam Gensler wrote: > > >> Hi all, > > >> > > >> TL;DR - using "--address" for individual host A records is broken, > > >> use "--host-record" instead. > > >> > > >> The following patch changes dnsmasq.init to build individual host > > >> records using "--host-record" instead of "--address". Using > > >> "--address" in this context is incorrect. For example, the current > > >> init script will create the following two entries > > >> in /var/etc/dnsmasq.conf: > > >> > > >> address=/OpenWrt.lan/192.168.1.1 > > >> ptr-record=1.1.168.192.in-addr.arpa,OpenWrt.lan > > >> > > >> At first glance this has the desired effect, "OpenWrt.lan" > > >> resolves to 192.168.1.1. However, what it really says is "for > > >> anything that ends with "OpenWrt.lan," that I don't have a record > > >> for, return 192.168.1.1". For example: > > >> > > >> fakeaddress.OpenWrt.lan would return 192.168.1.1. > > >> adsfasdfsdfsd.OpenWrt.lan would return 192.168.1.1. > > >> > > >> That's wrong and it causes problems when using a real domain name, > > >> such as domain.com. Often it's desirable to have "domain.com" > > >> resolve to an address so users can hit the http service at > > >> http://domain.com. By using the existing "config domain" option, > > >> you would configure this as follows: > > >> > > >> config domain > > >> option name 'domain.com' > > >> option ip '192.168.1.100' > > >> > > >> This would create these config items: > > >> > > >> address=/domain.com/192.168.1.100 > > >> ptr-record=100.1.168.192.in-addr.arpa,domain.com > > >> > > >> Now, as a result, anything that doesn't have its own, preexisting > > >> record, will also resolve to 192.168.1.100. That's no good because > > >> things like Windows do proxy requests by default for > > >> wpad.domain.com and instead of getting back an NXDOMAIN, it gets > > >> 192.168.1.100 and goes hunting for a pac file that doesn't exist. > > >> > > >> The solution for this is to use "--host-record". This is actually > > >> a lot easier to configure because dnsmasq will create the PTR > > >> records automatically, so there's no need to manual calculate it > > >> like is done today. This means that IPv6 addresses can be > > >> supported as well. The attached patch makes this adjustment and > > >> accomplishes the following: > > >> > > >> 1. By default, the router's hostname is now added to the > > >> configuration using "--host-record" instead of "--address". If > > >> there's a domain configured, the default host-record entry looks > > >> like this: > > >> > > >> host-record=OpenWrt.lan,OpenWrt,192.168.1.1 > > >> > > >> With this, now both "OpenWrt.lan" and "OpenWrt" will both resolve > > >> to 192.168.1.1. In the reverse, 192.168.1.1 will resolve to only > > >> "OpenWrt.lan". > > >> > > >> 2. It introduces a new configuration structure to define > > >> additional host records. For example: > > >> > > >> config hostrecord > > >> list name 'mail.domain.com' > > >> list name 'www.domain.com' > > >> list name 'domain.com' > > >> list ip '192.168.1.100' > > >> > > >> It uses lists here because dnsmasq can accept multiple hostnames > > >> and IP addresses in a single host-record. This generates the > > >> following config: > > >> > > >> host-record=mail.domain.com,www.domain.com,domain.com,192.168.1.100 > > >> > > >> All of those hostnames will resolve to 192.168.1.100 in the > > >> forward direction. 192.168.1.100 will resolve to "mail.domain.com" > > >> in the reverse. > > >> > > >> 3. It restructures "dhcp_domain_add()" to remove the manual PTR > > >> record calculation and configuration. This only supported IPv4 and > > >> isn't the proper use of the "--address" option. Now it will build > > >> a proper "--address" config that can support multiple domain names > > >> to a single IP address as per the dnsmasq MAN page. > > >> > > >> Note, the domain name is no longer automatically appended to the > > >> end of either "config hostrecord" or "config domain" entries as > > >> was previously the case. To define a specific fqdn, one needs to > > >> manually configure it as such. This makes the configuration more > > >> consistent; only what's configured is what is generated for > > >> dnsmasq. > > >> > > >> Sorry for the long email. I hope it all made sense. If not, please > > >> let me know. > > >> > > >> Thanks, > > >> Adam > > >> > > >> > > >> Signed-off-by: Adam Gensler <openwrt at gnslr.us> > > >> --- > > >> [snip] > > > _______________________________________________ > > > openwrt-devel mailing list > > > openwrt-devel@lists.openwrt.org > > > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel > > _______________________________________________ > > openwrt-devel mailing list > > openwrt-devel@lists.openwrt.org > > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel > > > > Hi: > > The patch (#3828) works well for a single hostname; however, if multiple > names are specified, dhcp_host_add generates an invalid "dhcp-host" option. > > dhcp_host_add could be modified to only use the first name encountered > (see below). > > Nathan > > Index: package/network/services/dnsmasq/files/dnsmasq.init > =================================================================== > --- package/network/services/dnsmasq/files/dnsmasq.init (revision 37919) > +++ package/network/services/dnsmasq/files/dnsmasq.init (working copy) > @@ -254,6 +254,7 @@ > [ -n "$networkid" ] && dhcp_option_add "$cfg" "$networkid" "$force" > > config_get name "$cfg" name > + name="${name/ */}" > config_get ip "$cfg" ip > [ -n "$ip" -o -n "$name" ] || return 0 > > @@ -408,6 +409,24 @@ > xappend "--address=/$record/$ip" > } > > +dhcp_address_add() { > + local cfg="$1" > + local ip name names record > + > + config_get names "$cfg" name "$2" > + [ -n "$names" ] || return 0 > + > + config_get ip "$cfg" ip "$3" > + [ -n "$ip" ] || return 0 > + > + for name in $names; do > + fqdn="$name${DOMAIN:+.$DOMAIN}" > + record="${record:+$record/}$name/$fqdn" > + done > + > + xappend "--address=/$record/$ip" > +} > + > dhcp_srv_add() { > local cfg="$1" > > @@ -512,6 +531,7 @@ > config_foreach dhcp_subscrid_add subscrid > config_foreach dhcp_domain_add domain > config_foreach dhcp_hostrecord_add hostrecord > + config_foreach dhcp_address_add host > > # add own hostname > [ $ADD_LOCAL_HOSTNAME -eq 1 ] && [ -n "$lanaddr" ] && { > -- > Nathan > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel >
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel