On 11/07/2016 04:15 AM, Daniel P. Berrange wrote:
On Mon, Nov 07, 2016 at 01:52:05AM -0500, Laine Stump wrote:
> On 11/06/2016 01:54 AM, Roman Bogorodskiy wrote:
>> Daniel P. Berrange wrote:
>>
>>> On Tue, Nov 01, 2016 at 06:15:59PM +0300, Pavel Timofeev wrote:
>>>> On BSD family OSes (Free/Net/Open/DragonFlyBSD, Mac OS) and
>>>> Solaris loopback interface is called 'lo0' instead of just
'lo'.
>>>>
>>>> ---
>>>> src/network/bridge_driver.c | 5 +++++
>>>> 1 file changed, 5 insertions(+)
>>>>
>>>> diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
>>>> index a3ee3f3..9d94d65 100644
>>>> --- a/src/network/bridge_driver.c
>>>> +++ b/src/network/bridge_driver.c
>>>> @@ -1002,7 +1002,12 @@ networkDnsmasqConfContents(virNetworkObjPtr
network,
>>>> virBufferAsprintf(&configbuf, "pid-file=%s\n",
pidfile);
>>>> /* dnsmasq will *always* listen on localhost unless told otherwise
*/
>>>> +#ifdef __linux__
>>>> virBufferAddLit(&configbuf,
"except-interface=lo\n");
>>>> +#else
>>>> + /* BSD family OSes and Solaris call loopback interface as lo0 */
>>>> + virBufferAddLit(&configbuf,
"except-interface=lo0\n");
>>>> +#endif
>>>> if (dnsmasqCapsGet(caps, DNSMASQ_CAPS_BIND_DYNAMIC)) {
>>>> /* using --bind-dynamic with only --interface (no
>>> ACK will push shortly.
>> This breaks all the networkxml2conftest tests, for example:
>>
>> $ VIR_TEST_DEBUG=1 VIR_TEST_RANGE=1 ./tests/networkxml2conftest
>> TEST: networkxml2conftest
>> 1) Network XML-2-Conf isolated-network ...
>> In
'/home/novel/code/libvirt/tests/networkxml2confdata/isolated-network.conf':
>> Offset 303
>> Expect [
>> ]
>> Actual [0
>> ]
>> $
> On IRC the other day Roman mentioned the idea of just replacing "lo" with
> "lo*" on all platforms. I checked the dnsmasq documentation and this
simple
> wildcarding is supported for the except-interface option, so I tried out
> such a patch on my system and it seems to work properly. Maybe we should do
> that instead of having yet another chunk of #ifdef __linux__ code (the test
> case datafiles will still need to be changed, but at least they'll be
> identical for all platforms).
Any idea how far back wildcards work. If they still work on the RHEL-6
vintage dnsmasq, then I'd agree with you and it'll make the test case
fix easier to avoid the conditional.
Time for the "Monday Sigh". Sigh.
I looked this up in dnsmasq's git repo, and it seems recognition of
wildcards in interface names was added in
commit 49333cbdbef3bf86198b31a42bffad002de305d5
Author: Simon Kelley <simon(a)thekelleys.org.uk>
Date: Fri Mar 15 20:30:51 2013 +0000
Allow trailing '*' wildcard in interface names.
That commit was first in dnsmasq 2.66, but RHEL6 is using dnsmasq 2.48.
The strange thing is that I tried running dnsmasq on RHEL6 with
"--except-interface=lo*" and was able to run multiple instances. I guess
my test was flawed. (NetworkManager doesn't support use of dnsmasq for
DNS services, as Cole suggested as a test in:
https://bugzilla.redhat.com/show_bug.cgi?id=886663#c2
But the source doesn't lie.)
So I guess we need to parameterize the tests somehow (this seems
familiar, but I can't remember why).