1. 20 1月, 2017 1 次提交
    • M
      qemu: set default vhost-user ifname · 57b5e27d
      Michal Privoznik 提交于
      Based on work of Mehdi Abaakouk <sileht@sileht.net>.
      
      When parsing vhost-user interface XML and no ifname is found we
      can try to fill it in in post parse callback. The way this works
      is we try to make up interface name from given socket path and
      then ask openvswitch whether it knows the interface.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      57b5e27d
  2. 09 12月, 2016 1 次提交
    • M
      Gathering vhostuser interface stats with ovs · 013df874
      Mehdi Abaakouk 提交于
      When vhostuser interfaces are used, the interface statistics
      are not available in /proc/net/dev.
      
      This change looks at the openvswitch interfaces statistics
      tables to provide this information for vhostuser interface.
      
      Note that in openvswitch world drop/error doesn't always make sense
      for some interface type. When these informations are not available we
      set them to 0 on the virDomainInterfaceStats.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      013df874
  3. 27 1月, 2016 2 次提交
  4. 14 3月, 2015 1 次提交
    • Z
      util: don't fail if no PortData is found while getting migrateData · 25df57db
      zhang bo 提交于
      Introduced by f6a2f97e
      
      Problem Description:
      After multiple times of migrating a domain, which has an ovs interface with no portData set,
      with non-shared disk, nbd ports got overflowed.
      
      The steps to reproduce the problem:
      1 define and start a domain with its network configured as:
          <interface type='bridge'>
                <source bridge='br0'/>
                <virtualport type='openvswitch'>
                </virtualport>
                <model type='virtio'/>
                <driver name='vhost' queues='4'/>
          </interface>
      2 do not set the network's portData.
      3 migrate(ToURI2) it with flag 91(1011011), which means:
        VIR_MIGRATE_LIVE
        VIR_MIGRATE_PEER2PEER
        VIR_MIGRATE_PERSIST_DEST
        VIR_MIGRATE_UNDEFINE_SOURCE
        VIR_MIGRATE_NON_SHARED_DISK
      4 migrate success, but we got an error log in libvirtd.log:
        error : virCommandWait:2423 : internal error: Child process (ovs-vsctl --timeout=5 get Interface
        vnet1 external_ids:PortData) unexpected exit status 1: ovs-vsctl: no key "PortData" in Interface
        record "vnet1" column external_ids
      5 migrate it back, migrate it , migrate it back, .......
      6 nbd port got overflowed.
      
      The reasons for the problem is :
      1 virNetDevOpenvswitchGetMigrateData() takes it as wrong if no portData is available for  the ovs
       interface of a domain. (We think it's not appropriate, as portData is just OPTIONAL)
      2 in func qemuMigrationBakeCookie(), it fails in qemuMigrationCookieAddNetwork(), and returns with -1.
       qemuMigrationCookieAddNBD() is not called thereafter, and mig->nbd is still NULL.
      3 However, qemuMigrationRun() just *WARN* if qemuMigrationBakeCookie() fails, migration still successes.
       cookie is NULL, it's not baked on the src side.
      4 On the destination side, it would alloc a port first and then free the nbd port in COOKIE.
       But the cookie is NULL due to qemuMigrationCookieAddNetwork() failure at src side. thus the nbd port
       is not freed.
      
      In this patch, we add "--if-exists" option to make ovs-vsctl not raise error if there's no portData available.
      Further more, because portData may be NULL in the cookie at the dest side, check it before setting portData.
      Signed-off-by: NZhou Yimin <zhouyimin@huawei.com>
      Signed-off-by: NZhang Bo <oscar.zhangbo@huawei.com>
      25df57db
  5. 28 11月, 2014 1 次提交
    • J
      Fix usage of virReportSystemError · 9340528a
      Jiri Denemark 提交于
      virReportSystemError is reserved for reporting system errors, calling it
      with VIR_ERR_* error codes produces error messages that do not make any
      sense, such as
      
          internal error: guest failed to start: Kernel doesn't support user
          namespace: Link has been severed
      
      We should prohibit wrong usage with a syntax-check rule.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      9340528a
  6. 14 7月, 2014 1 次提交
    • C
      openvswitch: Delete port if it exists while adding a new one · 33445ce8
      Chunhe Li 提交于
      If the openvswitch service is stopped, and is followed by destroying a
      VM, the openvswitch bridge translates into a state where it doesn't
      recover the port configuration. While it successfully fetches data
      from the internal DB, since the corresponding virtual interface does
      not exists anymore the whole recovery process fails leaving restarted
      VM with inability to connect to the bridge. The following set of
      commands will trigger the problem:
      
      virsh start vm
      service openvswitch-switch stop
      virsh destroy vm
      service openvswitch-switch start
      virsh start vm
      Signed-off-by: NChunhe Li <lichunhe@huawei.com>
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      33445ce8
  7. 03 7月, 2014 1 次提交
    • J
      Use virBufferCheckError everywhere we report OOM error · 92a8e72f
      Ján Tomko 提交于
      Replace:
      if (virBufferError(&buf)) {
          virBufferFreeAndReset(&buf);
          virReportOOMError();
          ...
      }
      
      with:
      if (virBufferCheckError(&buf) < 0)
          ...
      
      This should not be a functional change (unless some callers
      misused the virBuffer APIs - a different error would be reported
      then)
      92a8e72f
  8. 25 3月, 2014 1 次提交
  9. 15 10月, 2013 1 次提交
    • E
      maint: avoid 'const fooPtr' in virnet files · 955af4d4
      Eric Blake 提交于
      'const fooPtr' is the same as 'foo * const' (the pointer won't
      change, but it's contents can).  But in general, if an interface
      is trying to be const-correct, it should be using 'const foo *'
      (the pointer is to data that can't be changed).
      
      Fix up remaining offenders in src/util.
      
      * src/util/virnetdev.h (virNetDevSetMAC)
      (virNetDevReplaceMacAddress, virNetDevValidateConfig)
      (virNetDevReplaceNetConfig): Use intended type.
      * src/util/virnetdevbandwidth.h (virNetDevBandwidthCopy)
      (virNetDevBandwidthPlug): Likewise.
      * src/util/virnetdevmacvlan.h (virNetDevMacVLanCreate)
      (virNetDevMacVLanCreateWithVPortProfile)
      (virNetDevMacVLanDeleteWithVPortProfile)
      (virNetDevMacVLanRestartWithVPortProfile)
      (virNetDevMacVLanVPortProfileRegisterCallback): Likewise.
      * src/util/virnetdevopenvswitch.h (virNetDevOpenvswitchAddPort):
      Likewise.
      * src/util/virnetdevtap.h (virNetDevTapCreateInBridgePort):
      Likewise.
      * src/util/virnetdevvlan.h (virNetDevVlanEqual)
      (virNetDevVlanCopy): Likewise.
      * src/util/virnetdevvportprofile.h
      (virNetDevVPortProfileAssociate)
      (virNetDevVPortProfileDisassociate): Likewise.
      * src/util/virnetlink.h (virNetlinkEventRemoveCallback)
      (virNetlinkEventAddClient, virNetlinkEventRemoveClient):
      Likewise.
      * src/util/virnetdev.c (virNetDevSetMAC)
      (virNetDevReplaceMacAddress, virNetDevValidateConfig)
      (virNetDevReplaceNetConfig): Fix fallout.
      * src/util/virnetdevbandwidth.c (virNetDevBandwidthCopy)
      (virNetDevBandwidthPlug): Likewise.
      * src/util/virnetdevmacvlan.c (virNetDevMacVLanCreate)
      (virNetDevMacVLanCreateWithVPortProfile)
      (virNetDevMacVLanDeleteWithVPortProfile)
      (virNetDevMacVLanRestartWithVPortProfile)
      (virNetDevMacVLanVPortProfileRegisterCallback): Likewise.
      * src/util/virnetdevopenvswitch.c (virNetDevOpenvswitchAddPort):
      Likewise.
      * src/util/virnetdevtap.c (virNetDevTapCreateInBridgePort):
      Likewise.
      * src/util/virnetdevvlan.c (virNetDevVlanEqual)
      (virNetDevVlanCopy): Likewise.
      * src/util/virnetdevvportprofile.c
      (virNetDevVPortProfileAssociate)
      (virNetDevVPortProfileDisassociate)
      (virNetDevVPortProfileOpSetLink, virNetDevVPortProfileOpCommon)
      (virNetDevVPortProfileOp8021Qbg, virNetDevVPortProfileOp8021Qbh):
      Likewise.
      * src/util/virnetlink.c (virNetlinkEventRemoveCallback)
      (virNetlinkEventAddClient, virNetlinkEventRemoveClient):
      Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      955af4d4
  10. 11 7月, 2013 1 次提交
  11. 10 7月, 2013 1 次提交
  12. 26 6月, 2013 1 次提交
    • L
      util: fix bug found by Coverity · 003118de
      Laine Stump 提交于
      Commit 861d4056 added code (my personal change to "clean up" the
      submitter's code, *not* the fault of the submitter) that dereferenced
      virtVlan without first checking for NULL. This patch fixes that and,
      as part of the fix, cleans up some unnecessary obtuseness.
      003118de
  13. 25 6月, 2013 1 次提交
  14. 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
  15. 24 1月, 2013 1 次提交
  16. 21 12月, 2012 3 次提交
  17. 24 10月, 2012 1 次提交
  18. 21 9月, 2012 1 次提交
  19. 06 9月, 2012 1 次提交
    • L
      network: prevent infinite hang if ovs-vswitchd isn't running · 98e732fc
      Laine Stump 提交于
      This fixes https://bugzilla.redhat.com/show_bug.cgi?id=852984
      
      If a network or interface is configured to use Open vSwitch, but
      ovs-vswitchd (the Open vSwitch database service) isn't running, the
      ovs-vsctl add-port/del-port commands will hang indefinitely rather
      than returning an error. There is a --nowait option, but that appears
      to have no effect on add-port and del-port commands, so instead we add
      a --timeout=5 to the commands - they will retry for up to 5 seconds,
      then fail if there is no response.
      98e732fc
  20. 31 8月, 2012 1 次提交
    • K
      Fix adding ports to OVS bridges without VLAN tags · 7b9d55e6
      Kyle Mestery 提交于
      The introduction of the new VLAN code, along with the fix
      from 5e465df6, caused the
      addition of OVS ports to fail with the following message:
      
      ovs-vsctl: 00002|vsctl|ERR|: missing column name
      
      This fix takes into account the VLAN arguments are optional,
      and correctly sets up the command line to run the "ovs-vsctl"
      command to add ports to the OVS bridge.
      Signed-off-by: NKyle Mestery <kmestery@cisco.com>
      CC: Eric Blake <eblake@redhat.com>
      7b9d55e6
  21. 30 8月, 2012 2 次提交
  22. 29 8月, 2012 1 次提交
  23. 17 8月, 2012 1 次提交
  24. 15 8月, 2012 1 次提交
    • L
      util: eliminate union in virNetDevVPortProfile · 21ea73e8
      Laine Stump 提交于
      virNetDevVPortProfile has (had) a type field that can be set to one of
      several values, and a union of several structs, one for each
      type. When a domain's interface object is of type "network", the
      domain config may not know beforehand which type of virtualport is
      going to be provided in the actual device handed down from the network
      driver at runtime, but may want to set some values in the virtualport
      that may or may not be used, depending on the type. To support this
      usage, this patch replaces the union of structs with toplevel fields
      in the struct, making it possible for all of the fields to be set at
      the same time.
      21ea73e8
  25. 23 7月, 2012 1 次提交
    • O
      Desert the FSF address in copyright · f9ce7dad
      Osier Yang 提交于
      Per the FSF address could be changed from time to time, and GNU
      recommends the following now: (http://www.gnu.org/licenses/gpl-howto.html)
      
        You should have received a copy of the GNU General Public License
        along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
      
      This patch removes the explicit FSF address, and uses above instead
      (of course, with inserting 'Lesser' before 'General').
      
      Except a bunch of files for security driver, all others are changed
      automatically, the copyright for securify files are not complete,
      that's why to do it manually:
      
        src/security/security_selinux.h
        src/security/security_driver.h
        src/security/security_selinux.c
        src/security/security_apparmor.h
        src/security/security_apparmor.c
        src/security/security_driver.c
      f9ce7dad
  26. 17 7月, 2012 1 次提交
    • S
      Convert 'raw MAC address' usages to use virMacAddr · 387117ad
      Stefan Berger 提交于
      Introduce new members in the virMacAddr 'class'
      - virMacAddrSet: set virMacAddr from a virMacAddr
      - virMacAddrSetRaw: setting virMacAddr from raw 6 byte MAC address buffer
      - virMacAddrGetRaw: writing virMacAddr into raw 6 byte MAC address buffer
      - virMacAddrCmp: comparing two virMacAddr
      - virMacAddrCmpRaw: comparing a virMacAddr with a raw 6 byte MAC address buffer
      
      then replace raw MAC addresses by replacing
      
      - 'unsigned char *' with virMacAddrPtr
      - 'unsigned char ... [VIR_MAC_BUFLEN]' with virMacAddr
      
      and introduce usage of above functions where necessary.
      387117ad
  27. 09 3月, 2012 3 次提交
    • L
      util: log error on OOM in virNetDevOpenvswitchAddPort · d403b84c
      Laine Stump 提交于
      OOM conditions silently returned failure.
      d403b84c
    • A
      Attach vm-id to Open vSwitch interfaces. · ac8bbdbd
      Ansis Atteka 提交于
      This patch will allow OpenFlow controllers to identify which interface
      belongs to a particular VM by using the Domain UUID.
      
      ovs-vsctl get Interface vnet0 external_ids
      {attached-mac="52:54:00:8C:55:2C", iface-id="83ce45d6-3639-096e-ab3c-21f66a05f7fa", iface-status=active, vm-id="142a90a7-0acc-ab92-511c-586f12da8851"}
      
      V2 changes:
      Replaced vm-uuid with vm-id. There was a discussion in Open vSwitch
      mailinglist that we should stick with the same DB key postfixes for the
      sake of consistency (e.g iface-id, vm-id ...).
      ac8bbdbd
    • L
      util: whitespace change to virNetDevOpenvswitchAddPort · 38e56abb
      Laine Stump 提交于
      The indentation on the final lines of the function was off by four
      spaces, making me wonder for a second if there was something
      missing. (There wasn't.)
      38e56abb
  28. 16 2月, 2012 1 次提交
    • A
      network: support Open vSwitch · df810046
      Ansis Atteka 提交于
      This patch allows libvirt to add interfaces to already
      existing Open vSwitch bridges. The following syntax in
      domain XML file can be used:
      
          <interface type='bridge'>
            <mac address='52:54:00:d0:3f:f2'/>
            <source bridge='ovsbr'/>
            <virtualport type='openvswitch'>
              <parameters interfaceid='921a80cd-e6de-5a2e-db9c-ab27f15a6e1d'/>
            </virtualport>
            <address type='pci' domain='0x0000' bus='0x00'
                                slot='0x03' function='0x0'/>
          </interface>
      
      or if libvirt should auto-generate the interfaceid use
      following syntax:
      
          <interface type='bridge'>
            <mac address='52:54:00:d0:3f:f2'/>
            <source bridge='ovsbr'/>
            <virtualport type='openvswitch'>
            </virtualport>
            <address type='pci' domain='0x0000' bus='0x00'
                                slot='0x03' function='0x0'/>
          </interface>
      
      It is also possible to pass an optional profileid. To do that
      use following syntax:
      
         <interface type='bridge'>
           <source bridge='ovsbr'/>
           <mac address='00:55:1a:65:a2:8d'/>
           <virtualport type='openvswitch'>
             <parameters interfaceid='921a80cd-e6de-5a2e-db9c-ab27f15a6e1d'
                         profileid='test-profile'/>
           </virtualport>
         </interface>
      
      To create Open vSwitch bridge install Open vSwitch and
      run the following command:
      
          ovs-vsctl add-br ovsbr
      df810046