
On 11/09/2012 08:39 AM, Gene Czarcinski wrote:
On 11/09/2012 07:36 AM, Guido Günther wrote:
On Thu, Nov 08, 2012 at 04:13:41PM -0500, Gene Czarcinski wrote:
This patch changes how parameters are passed to dnsmasq. Instead of being on the command line, the parameters are put into a file (one parameter per line) and a commandline --conf-file= specifies the location of the file. The file is located in the same directory as the leases file. It'd be great if the commit message would state_why_ this is useful. Cheers, Much as it pains me to admit it but you have a valid point. I have been working on this for some time and the usefulness of this is "obvious" to me. While one of the first objectives was to remove the command line clutter by moving the dnsmasq parameters into a conf-file, it is with some planned (by me) future additions/enhancements where it becomes more important.
1. Specify a second conf-file which will initially be allocated as a zero-length file. This file will not be deleted when the network is destroyed. The purpose here is to be able to add log-queries and/or log-dhcp parameters to turn on dnsmasq logging. This can produce a log of clutter in syslog so it should be used onlt when necessary. But, when it it needed, it can be the only way to figure out what is happening.
I thought that we had determined this wouldn't work, because dnsmasq has its capabilities/privileges dropped as soon as it does the initial read of its config, and so it can't re-read its config files? Even if that isn't the case and dnsmasq *is* able to reread this config file, we can't allow that until we have a "network tainting" system in place similar to what we currently have for domains. This is needed to make it plainly clear that a configuration is operating "outside the box" and therefore all troubleshooting assumptions are invalid (this is what happens to a domain when, for example, a direct qemu-monitor command is sent to the domain, a "generic ethernet" device with a script file is attached, or an arbitrary commandline option is added to the qemu commandline). As a matter of fact, I think the more proper method of implementing this is to, as we've done in qemu, introduce a special dnsmasq namespace to the network xml, and allow specifying arbitrary command args via xml in that namespace. This way all of the config is still available in a single location, so there's never a question during debugging of whether or not extra command args were given to dnsmasq.
2. A previous patch I submitted which was accepted involved adding the local=/<domain-name>/ parameter. With this parameter, dnsmasq will not forward queries for the domain it handles. However, currently it will forward reverse lookup queries for it subnetwork. The fix is to add more local=/<ip4>.in-addr-arpa/ for IPv6 and local=/<ip6>.ip6.arpa/. And "<ip6>.ip6.arpa" expands into a forty four character string.
I also find it a lot easier to look and and understand a conf-file than looking at the the command line.
It's the above reasons that are most compelling to me.
In addition, the rest of the string of submitted updates all assume this this one is applied.
And lastly, from what I have observed, configuration files are preferred to command line parameters.
Well, we do call qemu with a big hairy long commandline... :-)