mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
qemu: fail on attempts to use <filterref> for non-tap network connections
nwfilter uses iptables and ebtables, which only work properly on
tap-based network connections (*not* on macvtap, for example), but we
just ignore any <filterref> elements for other types of networks,
potentially giving users a false sense of security.
This patch checks the network type and fails/logs an error if any
domain <interface> has a <filterref> when the connection isn't using a
tap device.
This resolves:
https://bugzilla.redhat.com/show_bug.cgi?id=1180011
(cherry picked from commit f4f1d18dc4
)
This commit is contained in:
parent
3f06ae4171
commit
27ae007f9f
@ -8365,6 +8365,17 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* and only TAP devices support nwfilter rules */
|
||||
if (net->filter &&
|
||||
!(actualType == VIR_DOMAIN_NET_TYPE_NETWORK ||
|
||||
actualType == VIR_DOMAIN_NET_TYPE_BRIDGE)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("filterref is not supported for "
|
||||
"network interfaces of type %s"),
|
||||
virDomainNetTypeToString(actualType));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (net->backend.tap &&
|
||||
!(actualType == VIR_DOMAIN_NET_TYPE_NETWORK ||
|
||||
actualType == VIR_DOMAIN_NET_TYPE_BRIDGE)) {
|
||||
|
@ -910,6 +910,17 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* and only TAP devices support nwfilter rules */
|
||||
if (net->filter &&
|
||||
!(actualType == VIR_DOMAIN_NET_TYPE_NETWORK ||
|
||||
actualType == VIR_DOMAIN_NET_TYPE_BRIDGE)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("filterref is not supported for "
|
||||
"network interfaces of type %s"),
|
||||
virDomainNetTypeToString(actualType));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (actualType == VIR_DOMAIN_NET_TYPE_BRIDGE ||
|
||||
actualType == VIR_DOMAIN_NET_TYPE_NETWORK) {
|
||||
tapfdSize = vhostfdSize = net->driver.virtio.queues;
|
||||
|
Loading…
Reference in New Issue
Block a user