func (dev *vxlanDevice) DelRoute(subnet ip.IP4Net) error { route := &netlink.Route{ Scope: netlink.SCOPE_UNIVERSE, Dst: subnet.ToIPNet(), Gw: subnet.IP.ToIP(), } log.Infof("calling RouteDel: %s", subnet) return netlink.RouteDel(route) }
func (dev *vxlanDevice) Configure(ipn ip.IP4Net) error { if err := setAddr4(dev.link, ipn.ToIPNet()); err != nil { return err } if err := netlink.LinkSetUp(dev.link); err != nil { return fmt.Errorf("failed to set interface %s to UP state: %s", dev.link.Attrs().Name, err) } // explicitly add a route since there might be a route for a subnet already // installed by Docker and then it won't get auto added route := netlink.Route{ LinkIndex: dev.link.Attrs().Index, Scope: netlink.SCOPE_UNIVERSE, Dst: ipn.Network().ToIPNet(), } if err := netlink.RouteAdd(&route); err != nil && err != syscall.EEXIST { return fmt.Errorf("failed to add route (%s -> %s): %v", ipn.Network().String(), dev.link.Attrs().Name, err) } return nil }