Libvirt provides a portable, long term stable C API for managing the virtualization technologies provided by many operating systems. It includes support for QEMU, KVM, Xen, LXC, bhyve, Virtuozzo, VMware vCenter and ESX, VMware Desktop, Hyper-V, VirtualBox and the POWER Hypervisor.
Go to file
tuqiang 21c55a45ef virNetDevOpenvswitchUpdateVlan: fix vlan tag update error
We try to update vlan tag by running virsh update-device command,
libvirtd will report ovs-vsctl arguments error. Vlan tag update
funtion does't consider the xml with no vlan configured circumstances.

The steps to reproduce the problem:
1 define and start domain with its vlan configured as:
    <interface type='bridge'>
      <mac address='52:54:00:9e:bb:ac'/>
      <source bridge='ovs-br0'/>
      <vlan>
        <tag id='10'/>
      </vlan>
      <virtualport type='openvswitch'>
      </virtualport>
      <target dev='vnet4.0'/>
      <model type='virtio'/>
      <driver name='vhost'/>
    </interface>
2 define and run virsh update-device command with no vlan configured as:
    <interface type='bridge'>
      <mac address='52:54:00:9e:bb:ac'/>
      <source bridge='ovs-br0'/>
      <virtualport type='openvswitch'>
      </virtualport>
      <target dev='vnet4.0'/>
      <model type='virtio'/>
      <driver name='vhost'/>
    </interface>
   #virsh update-device dom-id novlan.xml
3 virsh command returned error, and we got an error in libvirtd.log:
  error : virCommandWait:2584 : internal error: exit status 1: ovs-vsctl: 'set' command requires at least 3 arguments
  . Child process (ovs-vsctl --timeout=5 -- --if-exists clear Port vnet4.0 tag -- --if-exists clear Port vnet4.0 trunk
  -- --if-exists clear Port vnet4.0 vlan_mode -- --if-exists set Port vnet4.0) unexpected
  error : virNetDevOpenvswitchUpdateVlan:540 : internal error: Unable to set vlan configuration on port vnet4.0

Signed-off-by: Tu Qiang <tu.qiang35@zte.com.cn>
Signed-off-by: Yi Wang <wang.yi59@zte.com.cn>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2022-02-10 13:02:10 +01:00
.ctags.d
.github/workflows Switch to new GitHub repo-lockdown configuration 2021-10-20 14:27:20 +01:00
.gitlab/issue_templates gitlab: Add disclaimer to the 'feature' issue template 2021-07-30 15:26:45 +02:00
build-aux syntax-check: Suggest correct replacement for str(n)dup() 2022-02-03 15:39:46 +01:00
ci ci: containers: Add CentOS Stream 9 target 2022-02-01 17:33:17 +01:00
docs docs: Fix HMAT example 2022-02-10 12:43:36 +01:00
examples examples: drop some conditionals checks from macros 2022-01-17 10:44:33 +00:00
include include: define constants for resetting NVRAM state 2022-02-08 13:04:11 +00:00
po Translated using Weblate (Swedish) 2022-02-08 12:38:48 +01:00
scripts scripts: Properly declare g_auto() stub for cocci 2021-11-03 14:46:54 +01:00
src virNetDevOpenvswitchUpdateVlan: fix vlan tag update error 2022-02-10 13:02:10 +01:00
tests qemu: fix formatting of pflash readonly attribute 2022-02-08 13:04:20 +00:00
tools tools: add --reset-nvram arg to several virsh commands 2022-02-08 13:04:20 +00:00
.color_coded.in
.ctags
.dir-locals.el
.editorconfig
.gitignore
.gitlab-ci.yml ci: display installed packages at start of build 2021-11-24 11:17:10 +00:00
.gitmodules
.gitpublish
.mailmap
.ycm_extra_conf.py.in
AUTHORS.rst.in AUTHORS: Add myself to the list of commiters 2021-07-14 14:51:19 +02:00
config.h configure: bump min required CLang to 6.0 / XCode 10.0 2022-01-17 10:44:29 +00:00
configmake.h.in
CONTRIBUTING.rst
COPYING
COPYING.LESSER
gitdm.config
libvirt-admin.pc.in
libvirt-lxc.pc.in
libvirt-qemu.pc.in
libvirt.pc.in
libvirt.spec.in rpm: List one more directory 2022-02-02 16:26:29 +01:00
meson_options.txt meson: Introduce qemu_datadir option 2021-11-18 15:48:59 +01:00
meson.build meson: Don't overwrite includedir 2022-02-03 13:19:23 +01:00
mingw-libvirt.spec.in rpm: fix mingw obsoletes lines 2021-08-02 13:47:20 +01:00
NEWS.rst NEWS: Document recent VLAN ID improvement 2022-02-03 16:52:05 +01:00
README.rst
run.in run: detect daemons when run via wrapper commands 2021-12-01 12:14:03 +00:00

GitLab CI Build Status

CII Best Practices

Translation status

Libvirt API for virtualization

Libvirt provides a portable, long term stable C API for managing the virtualization technologies provided by many operating systems. It includes support for QEMU, KVM, Xen, LXC, bhyve, Virtuozzo, VMware vCenter and ESX, VMware Desktop, Hyper-V, VirtualBox and the POWER Hypervisor.

For some of these hypervisors, it provides a stateful management daemon which runs on the virtualization host allowing access to the API both by non-privileged local users and remote users.

Layered packages provide bindings of the libvirt C API into other languages including Python, Perl, PHP, Go, Java, OCaml, as well as mappings into object systems such as GObject, CIM and SNMP.

Further information about the libvirt project can be found on the website:

https://libvirt.org

License

The libvirt C API is distributed under the terms of GNU Lesser General Public License, version 2.1 (or later). Some parts of the code that are not part of the C library may have the more restrictive GNU General Public License, version 2.0 (or later). See the files COPYING.LESSER and COPYING for full license terms & conditions.

Installation

Instructions on building and installing libvirt can be found on the website:

https://libvirt.org/compiling.html

Contributing

The libvirt project welcomes contributions in many ways. For most components the best way to contribute is to send patches to the primary development mailing list. Further guidance on this can be found on the website:

https://libvirt.org/contribute.html

Contact

The libvirt project has two primary mailing lists:

Further details on contacting the project are available on the website:

https://libvirt.org/contact.html