1. 21 12月, 2012 14 次提交
  2. 19 12月, 2012 5 次提交
    • D
      Fix parsing of arch from domain XML · 1c212145
      Daniel P. Berrange 提交于
      When parsing the arch from domain XML, the result was only
      saved to a local variable, not the virDomainDefPtr
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      1c212145
    • M
      conf: eliminate redundant use of VIR_ALLOC · b12a9cde
      Martin Kletzander 提交于
      We can use VIR_REALLOC_N with NULL pointer, which behaves the same way
      as VIR_ALLOC_N in that case, so no need for a condition that's
      checking if some data are allocated already.
      
      ---
      
      I tried to find other parts of the code similar to this, so I can do a
      full cleanup for the whole repository, so I used this (excuse the long
      line, but that's how I was writing it):
      
      git grep -nHC 5 -e VIR_REALLOC_N -e VIR_ALLOC_N | while read line; do if [[ "$line" == "--" ]]; then if [[ ${#tmpbuf} -gt 10 && "$REALLOC_N" == "true" && "$ALLOC_N" == "true" ]]; then echo $line; while [[ ${#tmpbuf[*]} -gt 0 ]]; do echo "${tmpbuf[0]}"; tmpbuf=( "${tmpbuf[@]:1:${#tmpbuf[*]}}" ); done; fi; unset tmpbuf REALLOC_N ALLOC_N; else if [[ "$ALLOC_N" != "true" && "${line/VIR_ALLOC_N//}" != "${line}" ]]; then ALLOC_N="true"; fi; if [[ "$REALLOC_N" != "true" && "${line/VIR_REALLOC_N//}" != "${line}" ]]; then REALLOC_N="true"; fi; tmpbuf[${#tmpbuf[*]}]="$line"; fi; done | less
      
      And reviewed the output just to find out this was the only occurrence of
      the inconsistency.
      b12a9cde
    • M
      conf: minor indentation cleanups · 7affb25b
      Martin Kletzander 提交于
      On few places there are too many levels of indentation when some of
      them can be fixed with negating the option they are in or omitting
      useless condition altogether.
      7affb25b
    • D
      Convert CPU APIs to use virArch · 1846b80b
      Daniel P. Berrange 提交于
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      1846b80b
    • D
      Convert capabilities / domain_conf to use virArch · c25c18f7
      Daniel P. Berrange 提交于
      Convert the host capabilities and domain config structs to
      use the virArch datatype. Update the parsers and all drivers
      to take account of datatype change
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      c25c18f7
  3. 18 12月, 2012 3 次提交
    • D
      Add support for <hostdev mode="capabilities"> · aae0fc2a
      Daniel P. Berrange 提交于
      The <hostdev> device type has long had a redundant "mode"
      attribute, which has always been "subsys". This finally
      introduces a new mode "capabilities", which will be used
      by the LXC driver for device assignment. Since container
      based virtualization uses a single kernel, the idea of
      assigning physical PCI devices doesn't make sense. It is
      still reasonable to assign USB devices, but for assigning
      arbitrary nodes in /dev, the new 'capabilities' mode is
      to be used.
      
      The first capability support is 'storage', which is for
      assignment of block devices. Functionally this is really
      pretty similar to the <disk> support. The only difference
      is the device node name is identical in both host and
      container namespaces.
      
          <hostdev mode='capabilities' type='storage'>
            <source>
              <block>/dev/sdf1</block>
            </source>
          </hostdev>
      
      The second capability support is 'misc', which is for
      assignment of character devices. There is no existing
      parallel to this. Again the device node is the same
      inside & outside the container.
      
          <hostdev mode='capabilities' type='misc'>
            <source>
              <char>/dev/input/event3</char>
            </source>
          </hostdev>
      
      The reason for keeping the char & storage devices
      separate in the domain XML, is to mirror the split
      in the node device XML. NB the node device XML does
      not yet report character devices, but that's another
      new patch to come
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      aae0fc2a
    • P
      conf: cpu: Break some long lines · 41bd91f8
      Peter Krempa 提交于
      41bd91f8
    • P
      conf: cpu: Refactor parsing of vendor_id and fallback attributes · 4a9c1793
      Peter Krempa 提交于
      This patch simplifies the code that parses the fallback and vendor_id
      attributes from the domain xml cpu definition.
      
      Changes done:
      - free temp variables in the cleanup section instead of local use
      - remove checking for presence of the attribute to directly getting the
      value (saving call to virXPathBoolean)
      - replace loop used to check for ',' in the vendor_id string with strchr
      4a9c1793
  4. 17 12月, 2012 3 次提交
    • P
      conf: cpu: Fix memory leak when specifying cpu vendor_id manually · fb49ffc3
      Peter Krempa 提交于
      The field was not freed from the cpu definition.
      fb49ffc3
    • K
      conf: cpu: Fix parsing of vendor_id · 1190a824
      Ken ICHIKAWA 提交于
      This patch fixes a problem that vendor_id attribute can not be defined
      when fallback attribute is not defined.
      
      If I define domain xml like below:
      <domain>
        <cpu>
          <model vendor_id='aaaabbbbcccc'>core2duo</model>
        </cpu>
      </domain>
      
      In dumpxml, vendor_id is not reflected:
      <domain>
        <cpu mode='custom' match='exact'>
          <model fallback='allow'>core2duo</model>
        </cpu>
      </domain>
      
      The expected output is:
      <domain>
        <cpu mode='custom' match='exact'>
          <model fallback='allow' vendor_id='aaaabbbbcccc'>core2duo</model>
        </cpu>
      </domain>
      
      If the fallback attribute and vendor_id attribute is defined at the same
      time, it's reflected as expected.
      Signed-off-by: NKen ICHIKAWA <ichikawa.ken@jp.fujitsu.com>
      1190a824
    • G
      conf: add optional attribte primary to video <model> element · 09938bb3
      Guannan Ren 提交于
      If there are multiple video devices
      primary = 'yes' marks this video device as the primary one.
      The rest are secondary video devices. No more than one could be
      mark as primary. If none of them has primary attribute, the first
      one will be the primary by default like what it was.
      The reason of this changing is that for qemu, only one primary video
      device is permitted which can be of any type. For secondary video
      devices, only qxl is allowd. Primary attribute removes the restriction
      that the first have to be the primary one.
      
      We always put the primary video device into the first position of
      video device structure array after parsing.
      09938bb3
  5. 12 12月, 2012 6 次提交
    • D
      Refactor virDomainHostdevFind method · 9cdd9ea2
      Daniel P. Berrange 提交于
      Move the code for matching hostdev instances out of virDomainHostdevFind
      and into virDomainHostdevMatch method, which in turn calls out to other
      helper methods depending on the type of hostdev.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      9cdd9ea2
    • D
      Slightly refactor hostdev parsing / formating · 50897ffb
      Daniel P. Berrange 提交于
      Rename virDomainHostdevPartsParse to virDomainHostdevDefParseSubsys
      to reflect the fact that it only deals with hostdevs uing the
      traditional mode=subsystem, and not mode=capabilities
      
      Rename virDomainHostSourceFormat to virDomainHostdevDefFormatSubsys
      for the same reason.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      50897ffb
    • M
      domain: Keep assigned class_id in domstatus XML · c2fbb3c6
      Michal Privoznik 提交于
      Interfaces keeps a class_id, which is an ID from which bridge
      part of QoS settings is derived. We need to store class_id
      in domain status file, so we can later pass it to
      virNetDevBandwidthUnplug.
      c2fbb3c6
    • M
      network: Create real network status files · ae757743
      Michal Privoznik 提交于
      Currently, we are only keeping a inactive XML configuration
      in status dir. This is no longer enough as we need to keep
      this class_id attribute so we don't overwrite old entries
      when the daemon restarts. However, since there has already
      been release which has just <network/> as root element,
      and we want to keep things compatible, detect that loaded
      status file is older one, and don't scream about it.
      ae757743
    • M
      bandwidth: Create network bandwidth (un)plug functions · 07d1b6b5
      Michal Privoznik 提交于
      Network should be notified if we plug in or unplug an
      interface, so it can perform some action, e.g. set/unset
      network part of QoS. However, we are doing this in very
      early stage, so iface->ifname isn't filled in yet. So
      whenever we want to report an error, we must use a different
      identifier, e.g. the MAC address.
      07d1b6b5
    • M
      bandwidth: add new 'floor' attribute · ec6474b2
      Michal Privoznik 提交于
      This is however supported only on domain interfaces with
      type='network'. Moreover, target network needs to have at least
      inbound QoS set. This is required by hierarchical traffic shaping.
      
      From now on, the required attribute for <inbound/> is either 'average'
      (old) or 'floor' (new). This new attribute can be used just for
      interfaces type of network (<interface type='network'/>) currently.
      ec6474b2
  6. 11 12月, 2012 9 次提交
    • J
      80756876
    • G
      network: add support for DHCPv6 · 2d5cd1d7
      Gene Czarcinski 提交于
      The DHCPv6 support includes IPV6 dhcp-range and dhcp-host for one
      IPv6 subnetwork on one interface.  This support will only work
      if dnsmasq version >= 2.64; otherwise an error occurs if
      dhcp-range or dhcp-host is specified for an IPv6 address.
      
      Essentially, this change provides the same DHCP support for IPv6
      that has been available for IPv4.
      
      With dnsmasq >= 2.64, support for the RA service is also now provided
      by dnsmasq (radvd is no longer used/started). (Although at least one
      version of dnsmasq prior to 2.64 "supported" IPv6 Router
      Advertisement, there were bugs (fixed in 2.64) that rendered it
      unusable.)
      
      Documentation and the network schema has been updated
      to reflect the new support.
      2d5cd1d7
    • L
      conf: split <forward> parser/clear into separate functions · 71e30eff
      Laine Stump 提交于
      virNetworkDefUpdateForward requires separate functions to parse and
      clear a virNetworkForwardDef by itself, but they were previously just
      inlined in the virNetworkDef parse and free functions. This patch
      makes them into separate functions.
      71e30eff
    • L
      conf: put data for network <forward> element into its own struct · 47c94b65
      Laine Stump 提交于
      The attributes of a <network> element's <forward> element were
      previously stored directly in the virNetworkDef object, but
      virNetworkUpdateForward() needs to operate on a <forward> in
      isolation, so this patchs pulls out all those attributes into a
      separate virNetworkForwardDef struct (and shortens their names
      appropriately). This new object is contained in the virNetworkDef, not
      pointed to by it, so there is no extra memory management.
      
      This patch makes no functional changes, it only changes, e.g.,
      "nForwardIfs" to "forward.nifs".
      47c94b65
    • L
      conf: make virNetworkIpDefClear consistent with other functions · 31d21197
      Laine Stump 提交于
      The other clear functions in network_conf.c that clear out arrays of
      sub-objects do so by using the n[itemname]s value as a counter going
      down to 0. Make this one consistent. There's no functional value, just
      makes the style more consistent with the rest of the file.
      31d21197
    • L
      conf: rename some labels and functions in network_conf · dc9d8d68
      Laine Stump 提交于
      This makes some function names and arg lists for consistent with other
      parse functions in network_conf.c. While modifying
      virNetworkIPParseXML(), also change its "error" label to "cleanup",
      since the code at that label is executed on success as well as
      failure.
      dc9d8d68
    • L
      network: backend functions for updating network dns host/srv/txt · fc19a005
      Laine Stump 提交于
      These three functions are very similar - none allow a MODIFY
      operation; you can only add or delete.
      
      The biggest difference between them (other than the data itself) is in
      the criteria for determining a match, and whether or not multiple
      matches are possible:
      
      1) for HOST records, it's considered a match if the IP address or any
      of the hostnames of an existing record matches.
      
      2) for SRV records, it's a match if all of
      domain+service+protocol+target *which have been specified* are
      matched.
      
      3) for TXT records, there is only a single field to match - name
      (value can be the same for multiple records, and isn't considered a
      search term), so by definition there can be no ambiguous matches.
      
      In all three cases, if any matches are found, ADD will fail; if
      multiple matches are found, it means the search term was ambiguous,
      and a DELETE will fail.
      
      The upper level code in bridge_driver.c is already implemented for
      these functions - appropriate conf files will be re-written, and
      dnsmasq will be SIGHUPed or restarted as appropriate.
      fc19a005
    • L
      conf: clear and parse functions for dns host/srv/txt records · ab297bec
      Laine Stump 提交于
      Since there is only a single virNetworkDNSDef for any virNetworkDef,
      and it's trivial to determine whether or not it contains any real
      data, it's much simpler (and fits more uniformly with the parse
      function calling sequence of the parsers for many other objects that
      are subordinates of virNetworkDef) if virNetworkDef *contains* an
      virNetworkDNSDef rather than pointing to one.
      
      Since it is now just a part of another object rather than its own
      object, it no longer makes sense to have a *Free() function, so that
      is changed to a *Clear() function.
      
      More importantly though, ParseXML and Clear functions are needed for
      the individual items contained in a virNetworkDNSDef (srv, txt, and
      host records), but none of them have a *Clear(), and only two of the
      three had *ParseXML() functions (both of which used a non-uniform
      arglist). Those problems are cleared up by this patch - it splits the
      higher-level Clear function into separate functions for each of the
      three, creates a parse for txt records, and cleans up the srv and host
      parsers, so we now have all the utility functions necessary to
      implement virNetworkDefUpdateDNS(Host|Srv|Txt).
      ab297bec
    • L
      conf: rename network dns host/srv/txt arrays · 8b7d1874
      Laine Stump 提交于
      This shortens the name of the structs for srv and txt, and their
      instances in virNetworkDNSDef, to be more compact and uniform with the
      naming of the dns host array. It also changes the type of ntxts, etc
      from unsigned int to size_t, so that they can be used directly as args
      to VIR_*_ELEMENT.
      8b7d1874