[libvirt] [PATCHv2 13/13] Run radvd for virtual networks with IPv6 addresses
Eric Blake
eblake at redhat.com
Thu Dec 23 17:54:17 UTC 2010
On 12/22/2010 11:58 AM, Laine Stump wrote:
> Running an instance of the router advertisement daemon (radvd) allows
> guests using the virtual network to automatically acquire an IPv6
> address and default route. Note that acquiring an address only works
> for networks with a prefix length of exactly 64 - radvd is still run
> in other circumstances, and still advertises routes, but autoconf will
> not work because it requires exactly 64 bits of address info from the
> network prefix.
>
> This patch avoids a race condition with the pidfile by manually
> daemonizing radvd rather than allowing it to daemonize itself, then
> creating our own pidfile (in addition to radvd's own file, which is
> unnecessary). This is accomplished by exec'ing it with "--debug 1" in
> the commandline, and using virCommand's features to fork, create a
> pidfile, and detach from the newly forked process.
As a reminder, have you filed a bug report against radvd about their
anti-social daemonizing behavior?
> + cmd = virCommandNewArgList(RADVD, "--debug", "1",
> + "--config", configfile,
> + "--pidfile", NULL);
> + virCommandAddArgFormat(cmd, "%s-bin", pidfile);
> +
> + virCommandSetPidFile(cmd, pidfile);
> + virCommandDaemonize(cmd);
> +
> + if (virCommandRun(cmd, NULL) < 0)
> + goto cleanup;
> +
> + if (virFileReadPid(NETWORK_PID_DIR, radvdpidbase,
> + &network->radvdPid) < 0)
> + goto cleanup;
> +
> + ret = 0;
> +cleanup:
> + virCommandFree(cmd);
> + VIR_FREE(configfile);
> + VIR_FREE(configstr);
> + virBufferFreeAndReset(&configbuf);
> + VIR_FREE(radvdpidbase);
> + VIR_FREE(pidfile);
Should we also unlink() pidfile or pidfile-bin at any point?
> static int
> -networkEnableIpForwarding(void)
> +networkEnableIpForwarding(int enableIPv4, int enableIPv6)
s/int/bool/
ACK with those nits addressed.
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20101223/be8d5770/attachment-0001.sig>
More information about the libvir-list
mailing list