[libvirt] dnsmasq supporting RA instead of radvd patch

Gene Czarcinski gene at czarc.net
Thu Nov 8 13:08:34 UTC 2012

On 11/07/2012 04:23 PM, Doug Goldstein wrote:
> On Wed, Nov 7, 2012 at 3:05 PM, Gene Czarcinski <gene at czarc.net> wrote:
>>   I have a working patch to have dnsmasq support RA instead of radvd.
>> However, something has come up and it will be a week to ten days before I
>> can get it in shape to submit.
>> The current patch has three variables added to the _virNetworkObj structure:
>> dnsmasqRA flag and both major and minor values for the dnsmasq's version.
>> I use "dnsmasq --version" and then parse out the major/minor version values.
>> If major>2, then dnamsqFA=1.  If major=2 and minor>=63, then dnsmasqRA=1.
>> For all other cases, dnsmasqRA=0.
>> Code is added to the radvd functions which checks dnsmasqRA and exits if it
>> is 1.
>> Code is added to the dnsmasq configuration file if dnsmasqRa=1.  If
>> dhcp-range or dhcp-hosts is specified for IPv6, then enable-ra is added for
>> stateful (dhcpv6).  Otherwise, a special
>> "dhcp-range=<ipv6-subnet-address>,ra-only" so that the ManagedFlag will be
>> off in the RA packets for stateless operation.
>> OK, how does that sound?  Everyone comfortable with that?
>> Another thing is that I plan to add a test such that if the radvd executable
>> is not valid, the dnsmasqRA=1.
>> As I was doing this, I also looked through the libvirt.spec file. My, what a
>> wonderful example of wizardly that is.  Anyway, I thought some updates may
>> be in ortder:
>> - increase the minimum version for dnsmasq from 2.41 to 2.48.
>> - why is radvd required for rpmbuild?
>> - in light of my patch, make radvd an optional runtime requirement. I am not
>> a spec file expert by any means but there must be a way to not require radvd
>> if dnsmasq >- 2.63.
>> Comments?
>> Gene
> I'm still not thrilled that you're pushing forward with requiring 2.63
> + a few patches backported from 2.64 into 2.63 and only checking
> against 2.63.
I assume you are talking about dhcpv6 and not radvd.  Thus, your 
concerns are related to, if dnsmasq's version => 2.63, then use dnsmasq 
to support both statefull (ManagedFlag on) and stateless (ManagedFlag 
off) IPv6.

DHCPv6 does work in dnsmasq-2.63 but not very well with respect to 
libvirt.  Libvirt plus my patch to add interface= will allow one DHCPv6 
dnsmasq.  With the two patches, everything works as it should.

If you do not specify any dhcp-range= or dhcp-host= parameters, then it 
does not matter and everything works as it should.  If you do specify 
them, then you will (at best) get some indication with a message to 
syslog and, at worst, nothing happens and DHCPv6 requests are ignored.

The good news is that I have gotten the attention of dnsmasq's Fedora 
maintainer and he is looking into it.  I expect an update for Fedora 
"real soon now" and, since Simon said that dnsmasq-2.64 should be 
available "real soon now," that 2.64 be added to F18 updates sooner 
rather than later.

There are currently NO checks as far as the DHCPv6 implementing code.  
If you specify dhcp-range or dhcp-host, the parameters will be passed to 
dnsmasq.  I could add a check, and if the dnsmasq is earlier than 2.63, 
to fail dnsmasq startup.  I could also issue a warning message is 
dnsmasq is 2.63.  I have not done that because, if you do NOT specify 
dhcp-range and/or dhcp-host, nothing will happen and things work as they 
do now.

I noticed that your email has @gentoo,org.  I had a fleeting look at 
gentoo a bunch of years ago.  I do not know what problems result in your 


More information about the libvir-list mailing list