1. 20 11月, 2014 3 次提交
    • E
      build: fix build when not using dbus · be90aa00
      Eric Blake 提交于
      Commit c0e70221 breaks on a machine that lacks dbus headers:
      
      In file included from util/virdbus.c:24:0:
      util/virdbuspriv.h:31:3: error: unknown type name 'dbus_int16_t'
      
      * src/util/virdbuspriv.h (DBusBasicValue): Only provide fallback
      when dbus is compiled.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      be90aa00
    • E
      build: fix build with older dbus headers · c0e70221
      Eric Blake 提交于
      Compilation on a RHEL 5 host failed, due to the older dbus headers
      present on that machine, and triggered by commit 2aa167ca:
      
      util/virdbus.c: In function 'virDBusMessageIterDecode':
      util/virdbus.c:952: error: 'DBusBasicValue' undeclared (first use in this function)
      
      * m4/virt-dbus.m4 (LIBVIRT_CHECK_DBUS): Check for DBusBasicValue.
      * src/util/virdbuspriv.h (DBusBasicValue): Provide fallback.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      c0e70221
    • E
      util: don't log failure when older iptables lacks -w · 5bc033e2
      Eric Blake 提交于
      Commit dc33e6e4 caused older platforms like Fedora 20 to emit
      scary log messages at startup:
      
      2014-11-19 23:12:58.800+0000: 28906: error : virCommandWait:2532 : internal error: Child process (/usr/sbin/iptables -w -L -n) unexpected exit status 2: iptables v1.4.19.1: unknown option "-w"
      Try `iptables -h' or 'iptables --help' for more information.
      
      Since we are probing and expect to handle the case where -w is not
      supported, we should not let virCommand log it as an error.
      
      * src/util/virfirewall.c (virFirewallCheckUpdateLock): Handle
      non-zero status ourselves.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      5bc033e2
  2. 19 11月, 2014 3 次提交
    • E
      maint: forbid 'int foo = true' · eb909376
      Eric Blake 提交于
      I noticed this while working on qemuDomainGetBlockInfo.  Assigning
      a bool value to an int variable compiles fine, but raises red flags
      on the maintenance front as it becomes too easy to assign -1 or 2
      or any other non-bool value to the same variable.
      
      * cfg.mk (sc_prohibit_int_assign_bool): New rule.
      * src/conf/snapshot_conf.c (virDomainSnapshotRedefinePrep): Fix
      offenders.
      * src/qemu/qemu_driver.c (qemuDomainGetBlockInfo)
      (qemuDomainSnapshotCreateXML): Likewise.
      * src/test/test_driver.c (testDomainSnapshotAlignDisks):
      Likewise.
      * src/util/vircgroup.c (virCgroupSupportsCpuBW): Likewise.
      * src/util/virpci.c (virPCIDeviceBindToStub): Likewise.
      * src/util/virutil.c (virIsCapableVport): Likewise.
      * tools/virsh-domain-monitor.c (cmdDomMemStat): Likewise.
      * tools/virsh-domain.c (cmdBlockResize, cmdScreenshot)
      (cmdInjectNMI, cmdSendKey, cmdSendProcessSignal)
      (cmdDetachInterface): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      eb909376
    • E
      virdbus: don't force users to pass int for bool values · 2aa167ca
      Eric Blake 提交于
      Use of an 'int' to represent a 'bool' value is confusing.  Just
      because dbus made the mistake of cementing their 4-byte wire
      format of dbus_bool_t into their API doesn't mean we have to
      repeat the mistake.  With a little bit of finesse, we can
      guarantee that we provide a large-enough value to the DBus
      code, while still copying only the relevant one-byte bool
      to the client code, and isolate the rest of our code base from
      the DBus stupidity.
      
      * src/util/virdbus.c (GET_NEXT_VAL): Add parameter.
      (virDBusMessageIterDecode): Adjust all clients.
      * src/util/virpolkit.c (virPolkitCheckAuth): Use nicer type.
      * tests/virdbustest.c (testMessageSimple, testMessageStruct):
      Test new behavior.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      2aa167ca
    • A
      network: Add network bandwidth support to ethernet interfaces · 22cff52a
      Anirban Chakraborty 提交于
      Ethernet interfaces in libvirt currently do not support bandwidth setting.
      For example, following xml file for an interface will not apply these
      settings to corresponding qdiscs.
      
          <interface type="ethernet">
            <mac address="02:36:1d:18:2a:e4"/>
            <model type="virtio"/>
            <script path=""/>
            <target dev="tap361d182a-e4"/>
            <bandwidth>
              <inbound average="984" peak="1024" burst="64"/>
              <outbound average="2000" peak="2048" burst="128"/>
            </bandwidth>
          </interface>
      Signed-off-by: NAnirban Chakraborty <abchak@juniper.net>
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      22cff52a
  3. 15 11月, 2014 1 次提交
  4. 14 11月, 2014 1 次提交
    • D
      Re-add use of locking with iptables/ip6tables/ebtables · dc33e6e4
      Daniel P. Berrange 提交于
      A previous commit introduced use of locking with invocation
      of iptables in the viriptables.c module
      
        commit ba95426d
        Author: Serge Hallyn <serge.hallyn@ubuntu.com>
        Date:   Fri Nov 1 12:36:59 2013 -0500
      
          util: use -w flag when calling iptables
      
      This only ever had effect with the virtual network driver,
      as it was not wired up into the nwfilter driver. Unfortunately
      in the firewall refactoring the use of the -w flag was
      accidentally lost.
      
      This patch introduces it to the virfirewall.c module so that
      both the virtual network and nwfilter drivers will be using
      it. It also ensures that the equivalent --concurrent flag
      to ebtables is used.
      dc33e6e4
  5. 11 11月, 2014 1 次提交
    • H
      Fix invalid log, misused option types and a typo · 12bd207e
      Hao Liu 提交于
      This patch fixes the following issues.
      
      1)  When an invalid wwn is introduced, libvirt reports
          "Malformed wwn: %s". The template won't be replaced.
      
      2)  "target" option for dompmsuspend and "xml" option for
          save-image-define are required options and should use
          VSH_OT_DATA instead of VSH_OT_STRING as an option type.
      
      3)  A typo.
      Signed-off-by: NHao Liu <hliu@redhat.com>
      12bd207e
  6. 07 11月, 2014 2 次提交
  7. 06 11月, 2014 5 次提交
  8. 04 11月, 2014 4 次提交
  9. 03 11月, 2014 1 次提交
  10. 01 11月, 2014 1 次提交
  11. 30 10月, 2014 6 次提交
    • R
      virutil: fix virGetSCSIHostNumber stub return type · 44178b8e
      Roman Bogorodskiy 提交于
      The virGetSCSIHostNumber function return type is int, however
      its stubbed version returns NULL. That results in a build fail
      on systems that use the stubbed version. Fix by using a proper
      return type.
      44178b8e
    • R
      virnetdev: stub virNetDev{Add,Del}Multi on FreeBSD · 00fa136d
      Roman Bogorodskiy 提交于
      Currently, build fails on FreeBSD because its struct ifreq does not
      have ifr_hwaddr member. In order to fix that, check if this member
      is present, otherwise fall back to the stub version of the
      virNetDev{Add,Del}Multi functions.
      00fa136d
    • J
      virnetdev: Resolve Coverity RESOURCE_LEAK · 9babbaa5
      John Ferlan 提交于
      virFileReadAll returns a chunk of memory that needs to be free'd when
      done
      9babbaa5
    • J
      virnetdev: Resolve Coverity FORWARD_NULL · f099726c
      John Ferlan 提交于
      The complaint is that if cleanup is called when virFileReadAll fails,
      then mcast->entries is NULL and could be dereferenced in the clear
      function. After following the code some - I saw that the caller to
      the function (virNetDevGetMulticastTable) will also call
      virNetDevMcastListClear if this function returns -1, so this
      isn't necessary, so I removed the call.
      f099726c
    • J
      virnetdev: Resolve Coverity DEADCODE · 764deecb
      John Ferlan 提交于
      Coverity complains that because the for loop is from 0 to 5 (max tokens)
      and the impending switch/case statements used each of the #define values
      that the 'default' wouldn't reachable. This patch will convert the #define's
      into enum's and add the obligatory dead_error_begin marker for these type
      situations.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      764deecb
    • P
      storage: Fix crash when parsing backing store URI with schema · 98784369
      Peter Krempa 提交于
      The code that parses the schema from the URI touches the "hosts[0]"
      member of the storage file source structure in case the URI contains a
      schema. The hosts array was not yet allocated at the point in the code
      where the transport protocol was parsed and set. This lead to a crash of
      libvirtd.
      
      Fix the code by allocating the "hosts" array upfront and add a test case
      to verify this scenario. (Unfortunately this requires shuffling the test
      case numbers too).
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1156288
      98784369
  12. 29 10月, 2014 6 次提交
  13. 27 10月, 2014 1 次提交
    • L
      util: eliminate "use after free" in callers of virNetDevLinkDump · f9f9699f
      Laine Stump 提交于
      virNetDevLinkDump() gets a message from netlink into "resp", then
      calls nlmsg_parse() to fill the table "tb" with pointers into resp. It
      then returns tb to its caller, but not before freeing the buffer at
      resp. That means that all the callers of virNetDevLinkDump() are
      examining memory that has already been freed. This can be verified by
      filling the buffer at resp with garbage prior to freeing it (or, I
      suppose, just running libvirtd under valgrind) then performing some
      operation that calls virNetDevLinkDump().
      
      The code has been like this ever since virNetDevLinkDump() was written
      - the original author didn't notice it, and neither did later
      additional users of the function. It has only been pure luck (or maybe
      a lack of heavy load, and/or maybe an allocation algorithm in malloc()
      that delays re-use of just-freed memory) that has kept this from
      causing errors, for example when configuring a PCI passthrough or
      macvtap passthrough network interface.
      
      The solution taken in this patch is the simplest - just return resp to
      the caller along with tb, then have the caller free it after they are
      finished using the data (pointers) in tb. I alternately could have
      made a cleaner interface by creating a new struct that put tb and resp
      together along with a vir*Free() function for it, but this function is
      only used in a couple places, and I'm not sure there will be
      additional new uses of virNetDevLinkDump(), so the value of adding a
      new type, extra APIs, etc. is dubious.
      f9f9699f
  14. 22 10月, 2014 3 次提交
    • P
      util: string: Add helper to check whether string is empty · 0eeafeed
      Peter Krempa 提交于
      The helper checks whether a string contains only whitespace or is NULL.
      This will be helpful to skip cases where a user string is optional, but
      may be provided empty with the same meaning.
      0eeafeed
    • R
      Add support for /run/initctl · 7e037f64
      Rick Harris 提交于
      Newer versions of Debian use '/run/initctl' instead of '/dev/initctl'.
      This patch updates the code to search for the FIFO from a list of
      well-known locations.
      7e037f64
    • R
      Fix cast errors with clang · 82e4f85c
      Roman Bogorodskiy 提交于
      Build with clang fails with:
      
        CC       util/libvirt_util_la-virsocketaddr.lo
      util/virsocketaddr.c:904:17: error: cast from 'struct sockaddr *' to
      'struct sockaddr_in *' increases required alignment from 1 to 4
      [-Werror,-Wcast-align]
              inet4 = (struct sockaddr_in*) res->ai_addr;
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      util/virsocketaddr.c:909:17: error: cast from 'struct sockaddr *' to
      'struct sockaddr_in6 *' increases required alignment from 1 to 4
      [-Werror,-Wcast-align]
              inet6 = (struct sockaddr_in6*) res->ai_addr;
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      2 errors generated.
      
      Fix that by replacing virSocketAddrParseInternal() call with
      virSocketAddrParse() in the virSocketAddrIsNumericLocalhost() function.
      virSocketAddrParse stores an address in virSocketAddr.
      virSocketAddr uses a union to store an address, so it doesn't
      need casting.
      82e4f85c
  15. 15 10月, 2014 2 次提交