1. 02 12月, 2013 2 次提交
    • R
      vbox: handle errors of virDomainHostdevDefAlloc correctly · 1ed7e014
      Ryota Ozaki 提交于
      The original code ignored errors of virDomainHostdevDefAlloc,
      however, we should properly do error return from the function
      if it occurs.
      
      The fix pulls out virDomainHostdevDefAlloc from the loop and
      executes it all together before the loop. So we can easily
      return on errors without the notion of other memory allocations
      in the loop.
      
      The deallocation code is separated from the allocation code
      because it will be used by a further patch for fixing other error
      handlings.
      Reported-by: NLaine Stump <laine@laine.org>
      Signed-off-by: NRyota Ozaki <ozaki.ryota@gmail.com>
      1ed7e014
    • R
      vbox: fix incorrect loop condition in vboxHostDeviceGetXMLDesc · 82b5dd23
      Ryota Ozaki 提交于
      The fixed loop used logical OR to combine two conditions, however,
      it is apparently incorrect and logical AND is correct.
      
      We can fix it by replacing OR with AND, but this patch instead
      fixes the problem by getting rid of the first conditional
      statement: USBFilterCount < def->nhostdevs. It isn't needed
      because USBFilterCount will never be greater than or equal to
      def->nhostdevs.
      
      def->nhostdevs is calculated in the following code
      above the loop in question like this:
      
          for (i = 0; i < deviceFilters.count; i++) {
              PRBool active = PR_FALSE;
              IUSBDeviceFilter *deviceFilter = deviceFilters.items[i];
      
              deviceFilter->vtbl->GetActive(deviceFilter, &active);
              if (active) {
                  def->nhostdevs++;
              }
          }
      
      And the loop is constructed as like this:
      
          for (i = 0; (USBFilterCount < def->nhostdevs) || (i < deviceFilters.count); i++) {
              PRBool active                  = PR_FALSE;
      (snip)
              deviceFilter->vtbl->GetActive(deviceFilter, &active);
              if (!active)
                  continue;
      (snip)
              USBFilterCount++;
          }
      
      So def->nhostdevs is the number of active device filters and
      USBFilterCount is counted up only when a device filter is active.
      Thus, we can remove USBFilterCount < def->nhostdevs safely.
      Reported-by: NLaine Stump <laine@laine.org>
      Signed-off-by: NRyota Ozaki <ozaki.ryota@gmail.com>
      82b5dd23
  2. 25 11月, 2013 3 次提交
    • R
      vbox: add support for 4.3 APIs · c677ee85
      Ryota Ozaki 提交于
      Makefile.am, vbox_V4_3.c and vbox_driver.c do regular
      modifitions to support a new version of APIs.
      
      vbox_tmpl.c basically fixes incompatibilities since 4.2.
      
      The affected incompatibilities of 4.3 are:
      * IMachine::Delete() has been renamed to IMachine::deleteConfig()
      * IMedium::CreateBaseStorage() now accepts multiple variant values
      * IDisplay::GetScreenResolution() now returns the display position
        in the guest
      * IMachine now has multiple IUSBControllers and IUSBDeviceFilters
        handles USB device filters instead of (obsolete) IUSBController
      
      This patch is tested on Mac OS X 10.8.5 and Fedora 19.
      Signed-off-by: NRyota Ozaki <ozaki.ryota@gmail.com>
      c677ee85
    • R
      vbox: pull vboxHostDeviceGetXMLDesc out from vboxDomainGetXMLDesc · 05185021
      Ryota Ozaki 提交于
      The USB-related code in vboxDomainGetXMLDesc is deeply nested and
      difficult to add new code. So flatten it. To do so, the code is
      pulled out from vboxDomainGetXMLDesc to make the function short
      and to leaverage early return and goto for error handling.
      Signed-off-by: NRyota Ozaki <ozaki.ryota@gmail.com>
      05185021
    • R
      vbox: cleanup vboxAttachUSB · 1868b457
      Ryota Ozaki 提交于
      This cleanup flattens deeply nested code.
      Signed-off-by: NRyota Ozaki <ozaki.ryota@gmail.com>
      1868b457
  3. 21 11月, 2013 1 次提交
  4. 19 11月, 2013 1 次提交
  5. 08 11月, 2013 1 次提交
    • P
      conf: Refactor storing and usage of feature flags · de7b5faf
      Peter Krempa 提交于
      Currently we were storing domain feature flags in a bit field as the
      they were either enabled or disabled. New features such as paravirtual
      spinlocks however can be tri-state as the default option may depend on
      hypervisor version.
      
      To allow storing tri-state feature state in the same place instead of
      having to declare dedicated variables for each feature this patch
      refactors the bit field to an array.
      de7b5faf
  6. 21 10月, 2013 2 次提交
  7. 15 10月, 2013 2 次提交
  8. 11 7月, 2013 1 次提交
  9. 10 7月, 2013 1 次提交
  10. 07 6月, 2013 1 次提交
    • R
      Add support for VirtualBox 4.2 APIs · ab7110bf
      ryan woodsmall 提交于
      A few things have changed in the VirtualBox API - some small
      (capitalizations of things in function names like Ip to IP
      and Dhcp to DHCP) and some much larger (FindMedium is superceded
      by OpenMedium). The biggest change for the sake of this patch
      is the signature of CreateMachine is quite a bit different. Using
      the Oracle source as a guide, to spin up a VM with a given UUID,
      it looks like a text flag has to be passed in a new argument to
      CreateMachine. This flag is built in the VirtualBox 4.2 specific
      ifdefs and is kind of ugly but works. Additionally, there is now
      (unused) VM groups support in CreateMachine and the previous
      'osTypeId' arg is currently set to nsnull as in the Oracle code.
      
      The FindMedium to OpenMedium changes were more straightforward
      and are pretty clear. The rest of the vbox template changes are
      basically spelling/capitalization changes from the looks of things.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      ab7110bf
  11. 28 5月, 2013 1 次提交
    • E
      syntax: prefer space after semicolon in for loop · 146ba114
      Eric Blake 提交于
      I noticed several unusual spacings in for loops, and decided to
      fix them up.  See the next commit for the syntax check that found
      all of these.
      
      * examples/domsuspend/suspend.c (main): Fix spacing.
      * python/libvirt-override.c: Likewise.
      * src/conf/interface_conf.c: Likewise.
      * src/security/virt-aa-helper.c: Likewise.
      * src/util/virconf.c: Likewise.
      * src/util/virhook.c: Likewise.
      * src/util/virlog.c: Likewise.
      * src/util/virsocketaddr.c: Likewise.
      * src/util/virsysinfo.c: Likewise.
      * src/util/viruuid.c: Likewise.
      * src/vbox/vbox_tmpl.c: Likewise.
      * src/xen/xen_hypervisor.c: Likewise.
      * tools/virsh-domain-monitor.c (vshDomainStateToString): Drop
      default case, to let compiler check us.
      * tools/virsh-domain.c (vshDomainVcpuStateToString): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      146ba114
  12. 22 5月, 2013 1 次提交
    • J
      vbox: fix VIR_STRDUP value check · 1c65362f
      Ján Tomko 提交于
      In my review of 31532cab I missed the fact that VIR_STRDUP
      now returns 1 on success, and 0 if the source was NULL.
      
      (This still doesn't add proper OOM error handling.)
      1c65362f
  13. 21 5月, 2013 2 次提交
    • O
      src/vbox: Remove the whitespace before ';' · 7fba1f7c
      Osier Yang 提交于
      7fba1f7c
    • E
      maint: refer to correct license file · 043af8ac
      Eric Blake 提交于
      Now that COPYING no longer contains the text of the LGPL,
      modify the LGPLv2-only files from vbox to call out the
      correct file.
      
      * src/vbox/vbox_CAPI_v2_2.h: Refer to correct file.
      * src/vbox/vbox_CAPI_v3_0.h: Likewise.
      * src/vbox/vbox_CAPI_v3_1.h: Likewise.
      * src/vbox/vbox_CAPI_v3_2.h: Likewise.
      * src/vbox/vbox_CAPI_v4_0.h: Likewise.
      * src/vbox/vbox_CAPI_v4_1.h: Likewise.
      * src/vbox/vbox_V2_2.c: Likewise.
      * src/vbox/vbox_V3_0.c: Likewise.
      * src/vbox/vbox_V3_1.c: Likewise.
      * src/vbox/vbox_XPCOMCGlue.c: Likewise.
      * src/vbox/vbox_XPCOMCGlue.h: Likewise.
      * src/vbox/vbox_driver.c: Likewise.
      * src/vbox/vbox_driver.h: Likewise.
      * src/vbox/vbox_tmpl.c: Likewise.
      * src/vbox/vbox_V3_2.c: Copy license notice from vbox_V3_1.c.
      * src/vbox/vbox_V4_0.c: Likewise.
      * src/vbox/vbox_V4_1.c: Likewise.
      * src/vbox/README: Mention copyright issues; this particular
      file contains no code and therefore does not need LGPL.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      043af8ac
  14. 13 5月, 2013 1 次提交
  15. 08 5月, 2013 2 次提交
    • D
      Separate internal node device APIs from public API · 1c6d4ca5
      Daniel P. Berrange 提交于
      The individual hypervisor drivers were directly referencing
      APIs in src/nodeinfo.c in their virDriverPtr struct. Separate
      these methods, so there is always a wrapper in the hypervisor
      driver. This allows the unused virConnectPtr args to be
      removed from the nodeinfo.c file. Again this will ensure that
      ACL checks will only be performed on invocations that are
      directly associated with public API usage.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      1c6d4ca5
    • D
      Separate virGetHostname() API contract from driver APIs · ead63031
      Daniel P. Berrange 提交于
      Currently the virGetHostname() API has a bogus virConnectPtr
      parameter. This is because virtualization drivers directly
      reference this API in their virDriverPtr tables, tieing its
      API design to the public virConnectGetHostname API design.
      
      This also causes problems for access control checks since
      these must only be done for invocations from the public
      API, not internal invocation.
      
      Remove the bogus virConnectPtr parameter, and make each
      hypervisor driver provide a dedicated function for the
      driver API impl. This will allow access control checks
      to be easily inserted later.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      ead63031
  16. 02 5月, 2013 1 次提交
    • M
      virutil: Move string related functions to virstring.c · 7c9a2d88
      Michal Privoznik 提交于
      The source code base needs to be adapted as well. Some files
      include virutil.h just for the string related functions (here,
      the include is substituted to match the new file), some include
      virutil.h without any need (here, the include is removed), and
      some require both.
      7c9a2d88
  17. 24 4月, 2013 3 次提交
  18. 13 4月, 2013 1 次提交
  19. 11 4月, 2013 1 次提交
  20. 05 4月, 2013 5 次提交
    • P
      virCaps: get rid of defaultConsoleTargetType callback · 482e5f15
      Peter Krempa 提交于
      This patch refactors various places to allow removing of the
      defaultConsoleTargetType callback from the virCaps structure.
      
      A new console character device target type is introduced -
      VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE - to mark that no type was
      specified in the XML. This type is at the end converted to the standard
      VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL. Other types that are
      different from this default have to be processed separately in the
      device post parse callback.
      482e5f15
    • P
      virCaps: get rid of macPrefix field · 46becc18
      Peter Krempa 提交于
      Use the virDomainXMLConf structure to hold this data and tweak the code
      to avoid semantic change.
      
      Without configuration the KVM mac prefix is used by default. I chose it
      as it's in the privately administered segment so it should be usable for
      any purposes.
      46becc18
    • P
      conf callback: Rearrange function parameters · ad0d10b2
      Peter Krempa 提交于
      Move the xmlopt and caps arguments to the end of the argument list.
      ad0d10b2
    • P
      conf: Add post XML parse callbacks and prepare for cleaning of virCaps · 43b99fc4
      Peter Krempa 提交于
      This patch adds instrumentation that will allow hypervisor drivers to
      fill and validate domain and device definitions after parsed by the XML
      parser.
      
      With this patch, after the XML is parsed, a callback to the driver is
      issued requesting to fill and validate driver specific details of the
      configuration. This allows to use sensible defaults and checks on a per
      driver basis at the time the XML is parsed.
      
      Two callback pointers are stored in the new virDomainXMLConf object:
      * virDomainDeviceDefPostParseCallback (devicesPostParseCallback)
        - called for a single device parsed and for every single device in a
          domain config. A virDomainDeviceDefPtr is passed along with the
          domain definition and virCaps.
      
      * virDomainDefPostParseCallback, (domainPostParseCallback)
        - A callback that is meant to process the domain config after it's
        parsed.  A virDomainDefPtr is passed along with virCaps.
      
      Both types of callbacks support arbitrary opaque data passed for the
      callback functions.
      
      Errors may be reported in those callbacks resulting in a XML parsing
      failure.
      43b99fc4
    • P
      maint: Rename xmlconf to xmlopt and virDomainXMLConfig to virDomainXMLOption · e84b1931
      Peter Krempa 提交于
      This patch is the result of running:
      
      for i in $(git ls-files | grep -v html | grep -v \.po$ ); do
        sed -i -e "s/virDomainXMLConf/virDomainXMLOption/g" -e "s/xmlconf/xmlopt/g" $i
      done
      
      and a few manual tweaks.
      e84b1931
  21. 13 3月, 2013 1 次提交
    • P
      virCaps: conf: start splitting out irrelevat data · 27cf98e2
      Peter Krempa 提交于
      The virCaps structure gathered a ton of irrelevant data over time that.
      The original reason is that it was propagated to the XML parser
      functions.
      
      This patch aims to create a new data structure virDomainXMLConf that
      will contain immutable data that are used by the XML parser. This will
      allow two things we need:
      
      1) Get rid of the stuff from virCaps
      
      2) Allow us to add callbacks to check and add driver specific stuff
      after domain XML is parsed.
      
      This first attempt removes pointers to private data allocation functions
      to this new structure and update all callers and function that require
      them.
      27cf98e2
  22. 14 2月, 2013 1 次提交
  23. 08 2月, 2013 1 次提交
  24. 26 1月, 2013 2 次提交
    • J
      vbox: Adjust the UTF FREE macros · 97278ab4
      John Ferlan 提交于
      Adjust the macros to free memory allocated during various calls to
      perform the check if parameter is NULL prior to really freeing and to
      set the pointer to NULL after done freeing.
      97278ab4
    • J
      vbox: Address false positive for NULL dereference · 4f01d3d5
      John Ferlan 提交于
      Resolve a false positive from 'vboxIIDFromUUID_v2_x()'. The code sets
      'iid->value = &iid->backing' unconditionally prior to calling 'nsIDFromChar()'.
      The 'vboxIIDUnalloc_v2_x()' checks iid->value to not be &iid->backing. The
      iid->backing is a static buffer within the initialized structure.
      4f01d3d5
  25. 21 12月, 2012 2 次提交