package destructive

import (
	"github.com/vishvananda/netlink"
)

// NetworkConnectionController removes and restores network connection.
type NetworkConnectionController struct {
	defRoute *netlink.Route
}

// Enable removes default route.
func (t *NetworkConnectionController) Enable() error {
	link, err := netlink.LinkByName("eth0")
	if err != nil {
		return err
	}
	// order is determentistic, but we can remove all routes if necessary
	routes, err := netlink.RouteList(link, 4)
	if err != nil {
		return err
	}
	t.defRoute = &routes[0]
	return netlink.RouteDel(&routes[0])
}

// Disable removes default route.
func (t *NetworkConnectionController) Disable() error {
	if t.defRoute != nil {
		return netlink.RouteAdd(t.defRoute)
	}
	return nil
}