1. 08 4月, 2010 1 次提交
    • S
      nwfilter: Support for learning a VM's IP address · 3bf24abc
      Stefan Berger 提交于
      This patch implements support for learning a VM's IP address. It uses
      the pcap library to listen on the VM's backend network interface (tap)
      or the physical ethernet device (macvtap) and tries to capture packets
      with source or destination MAC address of the VM and learn from DHCP
      Offers, ARP traffic, or first-sent IPv4 packet what the IP address of
      the VM's interface is. This then allows to instantiate the network
      traffic filtering rules without the user having to provide the IP
      parameter somewhere in the filter description or in the interface
      description as a parameter. This only supports to detect the parameter
      IP, which is for the assumed single IPv4 address of a VM. There is not
      support for interfaces that may have multiple  IP addresses (IP
      aliasing) or IPv6 that may then require more than one valid IP address
      to be detected. A VM can have multiple independent interfaces that each
      uses a different IP address and in that case it will be attempted to
      detect each one of the address independently.
      
      So, when for example an interface description in the domain XML has
      looked like this up to now:
      
          <interface type='bridge'>
            <source bridge='mybridge'/>
            <model type='virtio'/>
            <filterref filter='clean-traffic'>
              <parameter name='IP' value='10.2.3.4'/>
            </filterref>
          </interface>
      
      you may omit the IP parameter:
      
          <interface type='bridge'>
            <source bridge='mybridge'/>
            <model type='virtio'/>
            <filterref filter='clean-traffic'/>
          </interface>
      
      Internally I am walking the 'tree' of a VM's referenced network filters
      and determine with the given variables which variables are missing. Now,
      the above IP parameter may be missing and this causes a libvirt-internal
      thread to be started that uses the pcap library's API to listen to the
      backend interface  (in case of macvtap to the physical interface) in an
      attempt to determine the missing IP parameter. If the backend interface
      disappears the thread terminates assuming the VM was brought down. In
      case of a macvtap device a timeout is being used to wait for packets
      from the given VM (filtering by VM's interface MAC address). If the VM's
      macvtap device disappeared the thread also terminates. In all other
      cases it tries to determine the IP address of the VM and will then apply
      the rules late on the given interface, which would have happened
      immediately if the IP parameter had been explicitly given. In case an
      error happens while the firewall rules are applied, the VM's backend
      interface is 'down'ed preventing it to communicate. Reasons for failure
      for applying the network firewall rules may that an ebtables/iptables
      command failes or OOM errors. Essentially the same failure reasons may
      occur as when the firewall rules are applied immediately on VM start,
      except that due to the late application of the filtering rules the VM
      now is already running and cannot be hindered anymore from starting.
      Bringing down the whole VM would probably be considered too drastic.
      While a VM's IP address is attempted to be determined only limited
      updates to network filters are allowed. In particular it is prevented
      that filters are modified in such a way that they would introduce new
      variables.
      
      A caveat: The algorithm does not know which one is the appropriate IP
      address of a VM. If the VM spoofs an IP address in its first ARP traffic
      or IPv4 packets its filtering rules will be instantiated for this IP
      address, thus 'locking' it to the found IP address. So, it's still
      'safer' to explicitly provide the IP address of a VM's interface in the
      filter description if it is known beforehand.
      
      * configure.ac: detect libpcap
      * libvirt.spec.in: require libpcap[-devel] if qemu is built
      * src/internal.h: add the new ATTRIBUTE_PACKED define
      * src/Makefile.am src/libvirt_private.syms: add the new modules and symbols
      * src/nwfilter/nwfilter_learnipaddr.[ch]: new module being added
      * src/nwfilter/nwfilter_driver.c src/conf/nwfilter_conf.[ch]
        src/nwfilter/nwfilter_ebiptables_driver.[ch]
        src/nwfilter/nwfilter_gentech_driver.[ch]: plu the new functionality in
      * tests/nwfilterxml2xmltest: extend testing
      3bf24abc
  2. 06 4月, 2010 1 次提交
  3. 01 4月, 2010 1 次提交
    • E
      build: more fallout from test -a · a792bf24
      Eric Blake 提交于
      * cfg.mk (sc_prohibit_test_minus_ao): Also check for [.
      * docs/Makefile.am (%.html, html/index.html): Avoid non-portable
      test usage.
      * libvirt.spec.in (%post): Likewise.
      * tools/virt-pki-validate.in (servercert.pem): Likewise.
      * configure.ac (LOGNAME): Use test, not [, in files processed by
      autoconf.
      Detected by Matthias Bolte.
      a792bf24
  4. 31 3月, 2010 1 次提交
  5. 18 3月, 2010 1 次提交
  6. 10 3月, 2010 1 次提交
    • D
      Change logrotate to be per-hypervisor logs · 89bf843a
      Daniel Veillard 提交于
      Having a single logrotate configuration file for all hypervisors
      did not work as logrotate would get confused if an hypervisor not
      supported on that platform was still listed. Simplest is to split
      the logrotate as separate per hypervisor files and change the
      spec file to only install the ones compiled in.
      * daemon/libvirtd.lxc.logrotate.in daemon/libvirtd.qemu.logrotate.in
        daemon/libvirtd.uml.logrotate.in: copy and split the original
        daemon/libvirtd.logrotate.in file
      * daemon/Makefile.am: update to support the different files and
        cleanup in sed suggested by Eric Blake
      * libvirt.spec.in: only install the relevant logrotate configs
      * daemon/.gitignore: update logrotate generated list
      89bf843a
  7. 06 3月, 2010 1 次提交
    • D
      Release of libvirt-0.7.7 · 703c1651
      Daniel Veillard 提交于
      * configure.ac libvirt.spec.in: update with new version
      * docs/news.html.in: add list of changes in 0.7.7
      * po/*po*: updated spanish and russian localisations, rebuilt
      703c1651
  8. 26 2月, 2010 1 次提交
  9. 24 2月, 2010 1 次提交
    • D
      Format FS pools on creation · b738016b
      Dave Allan 提交于
      Create the filesystem on the partition used by the pool
      * configure.ac: check for mkfs availability
      * libvirt.spec.in: add extra require on util-linux for mkfs
      * src/storage/storage_backend_fs.c: run mkfs with the expected
        fs type when creating a filesystem pool
      b738016b
  10. 04 2月, 2010 1 次提交
    • D
      Release of libvirt-0.7.6 · 31a5ee92
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: version bump and doc
        updates
      * po/*.po*: updated and regenerated the localizations
      31a5ee92
  11. 24 12月, 2009 1 次提交
  12. 23 12月, 2009 1 次提交
  13. 22 12月, 2009 1 次提交
  14. 10 12月, 2009 1 次提交
    • M
      remove all traces of lokkit support · 3b3305d8
      Mark McLoughlin 提交于
      Long ago we tried to use Fedora's lokkit utility in order to register
      our iptables rules so that 'service iptables restart' would
      automatically load our rules.
      
      There was one fatal flaw - if the user had configured iptables without
      lokkit, then we would clobber that configuration by running lokkit.
      
      We quickly disabled lokkit support, but never removed it. Let's do
      that now.
      
      The 'my virtual network stops working when I restart iptables' still
      remains. For all the background on this saga, see:
      
        https://bugzilla.redhat.com/227011
      
      * src/util/iptables.c: remove lokkit support
      
      * configure.in: remove --enable-lokkit
      
      * libvirt.spec.in: remove the dirs used only for saving rules for lokkit
      
      * src/Makefile.am: ditto
      
      * src/libvirt_private.syms, src/network/bridge_driver.c,
        src/util/iptables.h: remove references to iptablesSaveRules
      3b3305d8
  15. 07 12月, 2009 1 次提交
    • D
      Introduce a simple API for handling JSON data · 9428f2ce
      Daniel P. Berrange 提交于
      This introduces simple API for handling JSON data. There is
      an internal data structure 'virJSONValuePtr' which stores a
      arbitrary nested JSON value (number, string, array, object,
      nul, etc).  There are APIs for constructing/querying objects
      and APIs for parsing/formatting string formatted JSON data.
      
      This uses the YAJL library for parsing/formatting from
      
       http://lloyd.github.com/yajl/
      
      * src/util/json.h, src/util/json.c: Data structures and APIs
        for representing JSON data, and parsing/formatting it
      * configure.in: Add check for yajl library
      * libvirt.spec.in: Add build requires for yajl
      * src/Makefile.am: Add json.c/h
      * src/libvirt_private.syms: Export JSON symbols to drivers
      9428f2ce
  16. 21 11月, 2009 2 次提交
    • D
      Release of libvirt-0.7.4 · 040e80f7
      Daniel Veillard 提交于
      0.7.3 was broken
      
      * configure.in docs/news.html.in: release of 0.7.4
      * configure.in libvirt.spec.in: require netcf >= 0.1.4
      * src/Makefile.am: node_device/node_device_udev.h was missing from
        NODE_DEVICE_DRIVER_UDEV_SOURCES breaking compilation on platforms with
        udev
      040e80f7
    • D
      Release of libvirt-0.7.3 · b8d4b6be
      Daniel Veillard 提交于
      * configure.in docs/news.html.in libvirt.spec.in: describe new release
      * po/*.po*: regenerate
      b8d4b6be
  17. 20 11月, 2009 1 次提交
  18. 12 11月, 2009 1 次提交
    • D
      Exclude numactl on s390[x] · 3c3dffc2
      Daniel P. Berrange 提交于
      The numactl package is not applicable for s390[x] arches, so do
      not enable it as a build dep.
      
      * libvirt.spec.in: Exclude numactl on s390[x]
      3c3dffc2
  19. 04 11月, 2009 1 次提交
    • L
      Support reporting live interface IP/netmask · 753c6c9c
      Laine Stump 提交于
      This patch adds the flag VIR_INTERFACE_XML_INACTIVE to
      virInterfaceGetXMLDesc's flags. When it is*not* set (the default), the
      live interface info will be returned in the XML (in particular, the IP
      address(es) and netmask(s) will be retrieved by querying the interface
      directly, rather than  reporting what's in the config file). The
      backend of this is in netcf's ncf_if_xml_state() function.
      
      * configure.in libvirt.spec.in: requires netcf >= 0.1.3
      * include/libvirt/libvirt.h.in: adds flag VIR_INTERFACE_XML_INACTIVE
      * src/conf/interface_conf.c src/interface/netcf_driver.c src/libvirt.c:
        update the parsing and backend routines accordingly
      * tools/virsh.c: change interface edit to inactive definition and
        adds the inactive flag for interface dump
      753c6c9c
  20. 29 10月, 2009 1 次提交
    • M
      libvirt-devel should only require libvirt-client · 1acef95a
      Mark McLoughlin 提交于
      There's a long known issue where if you install libvirt in a guest,
      the default virtual network will conflict with the default virtual
      network in the host.
      
      That's one of the reasons we have the libvirt-client RPM - it allows
      you to install the client library without having the host side
      installed.
      
      Rich Jones points out that if you install libvirt-devel in a guest,
      then you get libvirtd installed and the network conflict:
      
        https://bugzilla.redhat.com/531200
      
      libvirt-devel should only require libvirt-client - e.g. nothing in
      the devel package pertains to anything in the libvirt RPM. The Fedora
      packaging guidelines say:
      
        https://fedoraproject.org/wiki/Packaging/Guidelines#Devel_Packages
      
        Devel packages must require the base package using a fully versioned
        dependency ...
      
      But for all intents and purposes, libvirt-client is our base RPM.
      
      * libvirt.spec.in: make libvirt-devel require libvirt-client
      1acef95a
  21. 13 10月, 2009 1 次提交
  22. 09 10月, 2009 1 次提交
    • A
      LXC add augeas support for config file · e1a2fe6a
      Amy Griffis 提交于
      * src/lxc/libvirtd_lxc.aug src/lxc/test_libvirtd_lxc.aug: augeas schemas
        for lxc.conf
      * src/Makefile.am libvirt.spec.in: glue the new augeas files in
      e1a2fe6a
  23. 08 10月, 2009 1 次提交
    • A
      LXC add driver config file lxc.conf · 2dd44664
      Amy Griffis 提交于
      * src/lxc/lxc.conf: new configuration file, there is currently one
        tunable "log_with_libvirtd" that controls whether an lxc controller will
        log only to the container log file, or whether it will honor libvirtd's
        log output configuration. This provides a way to have libvirtd and its
        children log to a single file.  The default is to log to the container
        log file.
      * src/Makefile.am libvirt.spec.in: add the new file
      * src/lxc/lxc_conf.[ch] src/lxc/lxc_driver.c: read the new log value
        from the configuration file and pass the log informations when
        starting up a container.
      2dd44664
  24. 06 10月, 2009 1 次提交
    • M
      Create /var/log/libvirt/{lxc,uml} dirs · d285084b
      Mark McLoughlin 提交于
      Otherwise logrotate barfs:
      
        error: error accessing /var/log/libvirt/uml: No such file or directory
        error: libvirtd:1 glob failed for /var/log/libvirt/uml/*.log
        error: found error in /var/log/libvirt/qemu/*.log /var/log/libvirt/uml/*.log /var/log/libvirt/lxc/*.log , skipping
      
      * qemud/Makefile.am: always create /var/log/libvirt/{lxc,uml} when
        installing the logrotate conf; not ideal, but easier than making
        the logrotate conf depend on which drivers are enabled
      d285084b
  25. 30 9月, 2009 2 次提交
  26. 28 9月, 2009 1 次提交
  27. 21 9月, 2009 5 次提交
    • D
      Tweak specfile to fix RHEL6 rules & ESX/PHYP enablement · cf5fa06c
      Daniel P. Berrange 提交于
      * libvirt.spec.in: ESX/PHYP drivers do not require libvirtd.
        RHEL-6 should include LXC on all arches
      cf5fa06c
    • D
      Move example XML files into examples/xml · 13f59ad7
      Daniel P. Berrange 提交于
      * docs/storage/: Move to examples/xml/storage/
      * docs/test*.xml: Move to examples/xml/test/
      * docs/Makefile.am: Remove example XML files from dist
      * Makefile.am: Add examples/xml to EXTRA_DIST
      * tests/virshtest.c: Update for moved test XML
      * libvirt.spec.in: Include example XML files as docs
      * tests/int-overflow: UPdate for moved XML
      13f59ad7
    • D
      Make pki_check.sh into an installed & supported tool · 3decd4f9
      Daniel P. Berrange 提交于
      * docs/pki_check.sh: Move to tool/virt-pki-validate.in and add
        in POD man page documentation
      * tools/.gitignore: Ignore generated virt-pki-validate file
      * tools/Makefile.am: Install & build virt-pki-validate and
        virt-pki-validate.1
      * docs/remote.html, docs/remote.html.in: Refer to new tool
        name virt-pki-validate
      * libvirt.spec.in, mingw32-libvirt.spec.in: Add virt-pki-validate
        and virt-pki-validate.1 to files list
      3decd4f9
    • D
      Move docs/examples into examples/ · cebeba7b
      Daniel P. Berrange 提交于
      * Makefile.am: Add examples/dominfo examples/domsuspend examples/python
        as SUBDIRS
      * configure.in: Update AC_OUTPUT for new/old Makefiles
      * docs/Makefile.am: Remove examples from SUBDIRS
      * docs/examples/info1.c: Move to examples/dominfo/info1.c
      * docs/examples/suspend.c: Move to examples/domsuspend/suspend.c
      * docs/examples: Remove all remaining files
      * docs/examples/python: Moved to examples/python/
      * examples/dominfo/Makefile.am, examples/domsuspend/Makefile.am: New
        build files
      * libvirt.spec.in: Update to take account of moved examples
      cebeba7b
    • D
      Refactor libvirt.spec to allow client-only builds · fd5c9bb9
      Daniel P. Berrange 提交于
      Some architectures in certain RHEL versions do not include any
      hypervisors. Update the specfile to allow those to easily build
      a remote client only version of libvirt. ie no libvirtd related
      bits at all.
      
      * qemud/Makefile.am: Always instal SASL config since its needed
        by client too
      * libvirt.spec.in: Re-factor specfile conditionals to allow entire
        server side build to be disabled easily, eg a remote client only
        build. Make RHEL-5 do client only build for s390/ppc. Make RHEL-6
        do a client only build for all non-x86_64 archs. Enable LXC on
        RHEL-6. Enable all Fedora >= 6 features on RHEL-6 too. Add some
        more conditionals around dnsmasq/iptables/hal Requires tags.
        Add missing e2fsprogs-devel BR for RHEL-5 as workaround for broken
        parted. Fix the device mapper BR for RHEL-5. Add conditional rules
        for ESX build. Add conditional rules for SELinux + HAL builds.
        Fix a mistaken %{with_qemu} to be %{with_network} when setting
        up default network XML
      fd5c9bb9
  28. 15 9月, 2009 1 次提交
    • D
      Release of libvirt 0.7.1 · c4f6e806
      Daniel Veillard 提交于
      * configure.in docs/news.html.in libvirt.spec.in src/libvirt_public.syms:
        updates to new release
      * NEWS docs/devhelp/libvirt-libvirt.html docs/html/libvirt-libvirt.html
        docs/libvirt-api.xml docs/libvirt-refs.xml docs/news.html
        include/libvirt/libvirt.h: regenerated
      c4f6e806
  29. 14 9月, 2009 1 次提交
  30. 10 9月, 2009 1 次提交
  31. 09 9月, 2009 1 次提交
    • D
      Deprecate lzma and lzop in favor of xz, add dep · c5a30558
      Daniel Veillard 提交于
      * src/qemu_driver.c: drop lzma and lzop images compression options
        as they are deprecated by xz
      * libvirt.spec.in: add requires for xz/bzip2/gzip as they are needed
        to implement the compression options
      c5a30558
  32. 08 9月, 2009 1 次提交
  33. 04 9月, 2009 2 次提交
    • D
      PHYP driver cleanups · 91c7bf65
      Daniel Veillard 提交于
      * libvirt.spec.in: activate phyp and fix the BuildDep to libssh2-devel
      * src/phyp/phyp_driver.c: fix a debug macro to use the normal logging API
      91c7bf65
    • D
      Move QEMU monitor socket in /var/lib/libvirt/qemu · 182a80b9
      Daniel P. Berrange 提交于
      Separate the guest created QEMU monitor socket location
      from the libvirtd create XML / PID data files, to improve
      security separation when running QEMU non-root
      
      * libvirt.spec.in: Leave /var/run/libvirt/qemu as root:root
      * src/qemu_conf.h: Add libDir and cacheDir directory paths
      * src/qemu_driver.c: Move QEMU monitor socket from
        stateDir to libDir to avoid making security critical directory
        accessible to QEMU guests.
      * src/util.c: Delay running hook till after damonizing to
        ensure pidfile is still written before changing UID/GID
      182a80b9