瀏覽代碼

Merge pull request #854 from aboch/ovlay

Delete veth on ep leave in overlay driver
Jana Radhakrishnan 9 年之前
父節點
當前提交
405377a58f
共有 2 個文件被更改,包括 15 次插入3 次删除
  1. 11 0
      libnetwork/drivers/overlay/joinleave.go
  2. 4 3
      libnetwork/drivers/overlay/ov_endpoint.go

+ 11 - 0
libnetwork/drivers/overlay/joinleave.go

@@ -54,6 +54,8 @@ func (d *driver) Join(nid, eid string, sboxKey string, jinfo driverapi.JoinInfo,
 		return err
 	}
 
+	ep.ifName = name2
+
 	// Set the container interface and its peer MTU to 1450 to allow
 	// for 50 bytes vxlan encap (inner eth header(14) + outer IP(20) +
 	// outer UDP(8) + vxlan header(8))
@@ -134,5 +136,14 @@ func (d *driver) Leave(nid, eid string) error {
 
 	n.leaveSandbox()
 
+	link, err := netlink.LinkByName(ep.ifName)
+	if err != nil {
+		log.Warnf("Failed to retrieve interface link for interface removal on endpoint leave: %v", err)
+		return nil
+	}
+	if err := netlink.LinkDel(link); err != nil {
+		log.Warnf("Failed to delete interface link on endpoint leave: %v", err)
+	}
+
 	return nil
 }

+ 4 - 3
libnetwork/drivers/overlay/ov_endpoint.go

@@ -11,9 +11,10 @@ import (
 type endpointTable map[string]*endpoint
 
 type endpoint struct {
-	id   string
-	mac  net.HardwareAddr
-	addr *net.IPNet
+	id     string
+	ifName string
+	mac    net.HardwareAddr
+	addr   *net.IPNet
 }
 
 func (n *network) endpoint(eid string) *endpoint {