Libvirt provides a portable, long term stable C API for managing the virtualization technologies provided by many operating systems. It includes support for QEMU, KVM, Xen, LXC, bhyve, Virtuozzo, VMware vCenter and ESX, VMware Desktop, Hyper-V, VirtualBox and the POWER Hypervisor.
Go to file
Laine Stump db7159a150 util: capabilities detection for dnsmasq
In order to optionally take advantage of new features in dnsmasq when
the host's version of dnsmasq supports them, but still be able to run
on hosts that don't support the new features, we need to be able to
detect the version of dnsmasq running on the host, and possibly
determine from the help output what options are in this dnsmasq.

This patch implements a greatly simplified version of the capabilities
code we already have for qemu. A dnsmasqCaps device can be created and
populated either from running a program on disk, reading a file with
the concatenated output of "dnsmasq --version; dnsmasq --help", or
examining a buffer in memory that contains the concatenated output of
those two commands. Simple functions to retrieve capabilities flags,
the version number, and the path of the binary are also included.

bridge_driver.c creates a single dnsmasqCaps object at driver startup,
and disposes of it at driver shutdown. Any time it must be used, the
dnsmasqCapsRefresh method is called - it checks the mtime of the
binary, and re-runs the checks if the binary has changed.

networkxml2argvtest.c creates 2 "artificial" dnsmasqCaps objects at
startup - one "restricted" (doesn't support --bind-dynamic) and one
"full" (does support --bind-dynamic). Some of the test cases use one
and some the other, to make sure both code pathes are tested.

(cherry picked from commit 719c2c7665)

Conflicts:
  src/network/bridge_driver.c
  * some new functions are missing in the backport, so they don't need
    to be modified.
  * Use dnsmasqCapsFree() instead of virObjectUnref()
  src/util/dnsmasq.c
  * eliminate use of virObject, since this version of libvirt
    doesn't yet have it
  * use networkReportError() instead of virReportError()
  * virBitmapAlloc() instead of virBitmapNew()
  src/util/dnsmasq.h
  * don't #include virobject.h
  * add prototype for dnsmasqCapsFree()
  src/libvirt_private.syms
  * export dnsmasqCapsFree
2012-11-29 16:29:14 -05:00
.gnulib@dbd914496c build: update to latest gnulib, for secure tarball 2012-07-27 11:52:31 -06:00
daemon daemon: Avoid 'Could not find keytab file' in syslog 2012-10-27 15:28:20 -04:00
docs docs: Fix installation of internals/*.html 2012-10-27 15:33:03 -04:00
examples adding handling EINTR to poll to make it more robust 2012-08-12 21:15:46 -04:00
gnulib build: fix fresh checkout on RHEL5 2012-04-25 16:36:26 -04:00
include snapshot: add atomic create flag 2012-03-23 16:38:20 -06:00
m4 maint: make it easier to copy FORTIFY_SOURCE snippet 2012-06-14 18:38:26 -04:00
po Prep for release 0.9.11.7 2012-10-27 16:54:51 -04:00
python python: fix snapshot listing bugs 2012-06-14 18:38:27 -04:00
src util: capabilities detection for dnsmasq 2012-11-29 16:29:14 -05:00
tests util: capabilities detection for dnsmasq 2012-11-29 16:29:14 -05:00
tools docs: virsh: clarify behavior of send-key 2012-10-27 15:28:32 -04:00
.dir-locals.el maint: let emacs avoid tabs in rng files 2011-08-13 08:56:26 -06:00
.gitignore Add /tools/libvirt-guests.service to .gitignore 2012-08-12 19:22:30 -04:00
.gitmodules make .gnulib a submodule 2009-07-08 16:17:51 +02:00
.mailmap qemu: add rbd to whitelist of migration-safe formats 2012-08-12 19:22:51 -04:00
AUTHORS dnsmasq: avoid forwarding queries without a domain 2012-10-07 16:49:51 -04:00
autobuild.sh Enable all warnings permanently & default to -Werror for GIT builds 2012-03-27 17:08:06 +01:00
autogen.sh autogen: Always abide --system 2012-08-12 18:34:54 -04:00
bootstrap build: update to latest gnulib, for secure tarball 2012-07-27 11:52:31 -06:00
bootstrap.conf build: update to latest gnulib, for secure tarball 2012-07-27 11:52:31 -06:00
cfg.mk build: update to latest gnulib, for secure tarball 2012-07-27 11:52:31 -06:00
ChangeLog-old virterror.c: Fix several spelling mistakes 2012-02-03 11:32:51 -07:00
configure.ac Prep for release 0.9.11.7 2012-10-27 16:54:51 -04:00
COPYING.LIB remove all trailing blank lines 2009-07-16 15:06:42 +02:00
HACKING Document STREQ_NULLABLE and STRNEQ_NULLABLE 2011-10-06 16:50:38 +02:00
libvirt.pc.in build: silence warning from autoconf 2012-06-14 18:23:21 -04:00
libvirt.spec.in spec: don't enable cgconfig under systemd 2012-11-05 10:55:56 -07:00
Makefile.am maint: add missing copyright notices 2011-07-28 15:01:17 -06:00
Makefile.nonreentrant Ban use of all inet_* functions 2010-10-22 11:59:23 +01:00
mingw32-libvirt.spec.in Fix typos in API XML file paths 2012-02-15 11:29:38 +00:00
README Correct typos in the documentation (Atsushi SAKAI) 2008-01-24 10:15:13 +00:00
README-hacking maint: relax git minimum version 2010-02-24 14:29:27 -05:00
TODO Update todo list file to point at bugzilla/website 2010-10-13 16:45:26 +01:00

         LibVirt : simple API for virtualization

  Libvirt is a C toolkit to interact with the virtualization capabilities
of recent versions of Linux (and other OSes). It is free software
available under the GNU Lesser General Public License. Virtualization of
the Linux Operating System means the ability to run multiple instances of
Operating Systems concurrently on a single hardware system where the basic
resources are driven by a Linux instance. The library aim at providing
long term stable C API initially for the Xen paravirtualization but
should be able to integrate other virtualization mechanisms if needed.

Daniel Veillard <veillard@redhat.com>