// nukeTaps removes a list of tap devices func nukeTaps(taps []string) { for _, t := range taps { if err := bridge.DestroyTap(t); err != nil { log.Error("%v -- %v", t, err) } } }
// Flush cleans up all resources allocated to the VM which includes all the // network taps. func (vm *KvmVM) Flush() error { vm.lock.Lock() defer vm.lock.Unlock() for _, net := range vm.Networks { // Handle already disconnected taps differently since they aren't // assigned to any bridges. if net.VLAN == DisconnectedVLAN { if err := bridge.DestroyTap(net.Tap); err != nil { log.Error("leaked tap %v: %v", net.Tap, err) } continue } br, err := getBridge(net.Bridge) if err != nil { return err } if err := br.DestroyTap(net.Tap); err != nil { log.Error("leaked tap %v: %v", net.Tap, err) } } return vm.BaseVM.Flush() }