func (v *veth) create(n *network, nspid int) (err error) { tmpName, err := v.generateTempPeerName() if err != nil { return err } n.TempVethPeerName = tmpName defer func() { if err != nil { netlink.NetworkLinkDel(n.HostInterfaceName) netlink.NetworkLinkDel(n.TempVethPeerName) } }() if n.Bridge == "" { return fmt.Errorf("bridge is not specified") } if err := netlink.NetworkCreateVethPair(n.HostInterfaceName, n.TempVethPeerName, n.TxQueueLen); err != nil { return err } if err := v.attach(&n.Network); err != nil { return err } child, err := net.InterfaceByName(n.TempVethPeerName) if err != nil { return err } return netlink.NetworkSetNsPid(child, nspid) }
func (v *veth) create(n *network, nspid int) (err error) { tmpName, err := v.generateTempPeerName() if err != nil { return err } n.TempVethPeerName = tmpName defer func() { if err != nil { netlink.NetworkLinkDel(n.HostInterfaceName) netlink.NetworkLinkDel(n.TempVethPeerName) } }() if n.Bridge == "" { return fmt.Errorf("bridge is not specified") } bridge, err := net.InterfaceByName(n.Bridge) if err != nil { return err } if err := netlink.NetworkCreateVethPair(n.HostInterfaceName, n.TempVethPeerName, n.TxQueueLen); err != nil { return err } host, err := net.InterfaceByName(n.HostInterfaceName) if err != nil { return err } if err := netlink.AddToBridge(host, bridge); err != nil { return err } if err := netlink.NetworkSetMTU(host, n.Mtu); err != nil { return err } if n.HairpinMode { if err := netlink.SetHairpinMode(host, true); err != nil { return err } } if err := netlink.NetworkLinkUp(host); err != nil { return err } child, err := net.InterfaceByName(n.TempVethPeerName) if err != nil { return err } return netlink.NetworkSetNsPid(child, nspid) }
func (self *VLanSetter) delVLan(vethName string) { if err := netlink.NetworkLinkDel(vethName); err != nil { logs.Debug("Delete device failed", err) } }
// DeletePeerLink deletes peer link. It also deletes the other peer interface in VethPair func (veth *VethPair) DeletePeerLink() error { return netlink.NetworkLinkDel(veth.peerIfc.Name) }
// DeleteLink deletes link interface on Linux host. // It is equivalent of running: ip link delete dev ${interface name} func (l *Link) DeleteLink() error { return netlink.NetworkLinkDel(l.NetInterface().Name) }
// DeleteLink deletes netowrk link from Linux Host // It is equivalent of running: ip link delete dev ${name} func DeleteLink(name string) error { return netlink.NetworkLinkDel(name) }
func cleanup(intfName string) error { if _, err := net.InterfaceByName(intfName); err == nil { return netlink.NetworkLinkDel(intfName) } return nil }