tap_unplug() is only called in hotplugging functions which
perform a tap_plug() afterwards, and and in qemu-server's
bridge-down script.
The OVS port cleanup for non-firewall ports was done only in
tap_plug(), which means that in the case when qemu exits and
the tap device disappears, the OVS port for it stays.
With this patch the cleanup happens in both tap_unplug() and
tap_plug() to avoid problems with upgrades on systems
where there have already been ports leaked.
Any action we take in tap_plug() when using OVS will undo
our rate limiting, which means any hotplug change must
restore the previous rate setting.
Since this means tap_plug() would always be followed by a
tap_rate_limit() call anyway we just include the rate
parameter here and let the caller decide whether the full
tap_plug() is required or the simple tap_rate_limit()
suffices.
eth0-->vmbr0--vlan--fwintXiY-->fwbr-->tapXiY (firewalled tap)
--vlan-->tapXiY (non firewall tap)
This is based on patches from Alexandre, but tries to factor out
common code into privat methods.
eth0----->vmbr0
eth0.94-->vmbr0v94<--tapXiY (non firewalled tap)
<--linkXiY-->linkXpY-->fwbrXiY-->tapXiY (firewalled tap)
This is based on patches from Alexandre, but tries to factor out
common code into privat methods.
Simply use IO::File to write /proc/xyz files instead of running
external program using system("echo ...") (which fails when running
in perl taint mode).
Note: I force removal of openvswitch tap configuration at begin of tap_plug,
because openvswitch don't auto-delete tap config on tap interface deletion.
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
This reverts commit fa49ab1a08.
This still cause problems with bonding device. Nobody really knows
whats wrong. Also, this is not fully compatible with existing setups.
- use ip command instead of old vconfig
- activate gvrp by default (it doesn't harm if the switch does not support it or it is disabled)
- use bridge instead of raw ethernet device as vlan bridge
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>