mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
network: get vlan info for Open vSwitch interfaces from proper source
This bug was revealed by the crash described in https://bugzilla.redhat.com/show_bug.cgi?id=852383 The vlan info pointer sent to virNetDevOpenvswitchAddPort should never be non-NULL unless there is at least one tag. The factthat such a vlan info pointer was receveid pointed out that a caller was passing the wrong pointer. Instead of sending &net->vlan, the result of virDomainNetGetActualVlan(net) should be sent - that function will look for vlan info in net->data.network.actual->vlan, and in cany case return NULL instead of a pointer if the vlan info it finds has no tags. Aside from causing the crash, sending a hardcoded &net->vlan has the effect of ignoring vlan info from a <network> or <portgroup> config.
This commit is contained in:
parent
3219cc3292
commit
b3bd5d6c5a
@ -325,7 +325,7 @@ static int virLXCProcessSetupInterfaceBridged(virConnectPtr conn,
|
||||
|
||||
if (vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH)
|
||||
ret = virNetDevOpenvswitchAddPort(brname, parentVeth, &net->mac,
|
||||
vm->uuid, vport, &net->vlan);
|
||||
vm->uuid, vport, virDomainNetGetActualVlan(net));
|
||||
else
|
||||
ret = virNetDevBridgeAddPort(brname, parentVeth);
|
||||
if (ret < 0)
|
||||
|
@ -258,7 +258,7 @@ qemuNetworkIfaceConnect(virDomainDefPtr def,
|
||||
err = virNetDevTapCreateInBridgePort(brname, &net->ifname, &net->mac,
|
||||
def->uuid, &tapfd,
|
||||
virDomainNetGetActualVirtPortProfile(net),
|
||||
&net->vlan,
|
||||
virDomainNetGetActualVlan(net),
|
||||
tap_create_flags);
|
||||
virDomainAuditNetDevice(def, net, "/dev/net/tun", tapfd >= 0);
|
||||
if (err < 0) {
|
||||
|
@ -141,7 +141,7 @@ umlConnectTapDevice(virConnectPtr conn,
|
||||
if (virNetDevTapCreateInBridgePort(bridge, &net->ifname, &net->mac,
|
||||
vm->uuid, NULL,
|
||||
virDomainNetGetActualVirtPortProfile(net),
|
||||
&net->vlan,
|
||||
virDomainNetGetActualVlan(net),
|
||||
VIR_NETDEV_TAP_CREATE_IFUP) < 0) {
|
||||
if (template_ifname)
|
||||
VIR_FREE(net->ifname);
|
||||
|
Loading…
Reference in New Issue
Block a user