* qemud/qemud.c: clean up qemudInitialize() and qemudListen()
so as to coalesce the two "system vs. user" code paths and
fix up some problems noticed by dan.
* qemud/qemud.c, qemud/dispatch.c, qemud/internal.h
qemud/conf.c, qemud/driver.c, configure.in: add a
qemudLog() function which uses syslog() if we're in daemon
mode, doesn't output INFO/DEBUG messages unless the
verbose flag is set and doesn't output DEBUG messages
unless compiled with --enable-debug. Also, make a first
pass through fatal errors and add error messages for them.
* qemud/internal.h, qemud/qemud.c: improve signal handling
and handle SIGHUP by shutting down all guests and networks
and re-loading configs, and handle SIGINT and SIGTERM
by shutting down cleanly.
* qemud/qemud.c, qemud/bridge.c, qemud/iptables.c: fix
our FD_CLOEXEC usage so that all fds which should be
closed on exec are marked as such and that we leave
exec() to do the actual closing.
* qemud/iptables.[ch]: add code for managing iptables
rules.
* qemud/Makefile.am: add iptables.[ch].
* qemud/qemud.c: add and remove iptables rules as
appropriate.
* qemud/conf.c: when starting a guess, add a rule
allowing it to forward packets across the networks
bridge.
* qemud/internal.h: add iptables context ptr
* configure.in: add --with-iptables-dir and
--with-iptables-prefix to allow us to put our rules
in a chain with the given prefix and save the rules
in files in the given dir so as to integrate with
the proposed "service iptables restart" solution
in:
https://bugzilla.redhat.com/227011
* include/libvirt/libvirt.h.in, src/libvirt.c: add
virNetworkGetBridgeName() to allow finding out what
bridge to connect to in order to join a network.
* src/driver.h: add networkGetBridgeName() to vtable.
* qemud/protocol.h: add the request and reply to
the qemud protocol.
* qemud/dispatch.c, qemud/driver.[ch]: handle them
here.
* src/qemu_internal.c: implement GetBridgeName()
in the qemu driver.
* src/libvirt_sym.version: add new symbol.
* qemud/conf.c: add support for connecting a qemu
guest to a bridge using a tap device in order to
connect it to a virtual network.
* qemud/internal.h: add <interface type="network">
config and track tapfds so as to not close them
on exec.
* qemud/qemud.c: don't close tapfds on exec and
disconnect the iface when the guest shuts down.
* configure.in: add --disable-bridge-params, check
for libsysfs and various kernel headers
* bridge.[ch]: add code for managing bridges
* qemud/Makefile.am: add bridge.[ch] and link against
libsysfs if enabled.
* qemud/conf.c: add support for bridge config.
* qemud/internal.h: add various bridging bits
* qemud/qemud.c: implement qemudStartNetworkDaemon()
and qemudShutdownNetworkDaemon().
* qemud/conf.[ch]: implement parsing and saving network
configs.
* qemud/driver.c: flesh out the stubs
* qemud/internal.h: add networks list etc. to
struct qemud_server
* qemud/qemud.c: add qemudStartNetworkDaemon() and
qemudShutdownNetworkDaemon() stubs.
* qemud/qemud.c: Re-factor out qemudExec() so that it can
be used to launch dnsmasq.
* qemud/conf.c: don't return argc from qemudBuildCommandLine()
as exec() doesn't need it.
* qemud/conf.c: Re-factor bits of conf.c so that:
- qemudMakeConfigPath() can be re-used given another configDir
- split qemudEnsureConfigDir() out of qemudSaveConfig() so
that it may be re-used to create another configDir
- split qemudScanConfigDir() out so that qemudScanConfigs()
can scan multiple configDirs
* qemud/conf.c: handle an unspecified MAC address,
fix the argv freeing code in qemudBuildCommandLine()
and fix copy and paste error in qemudGenerateXML()