From d94be29ec50eda4983e2f4f6206bf9999207f9c0 Mon Sep 17 00:00:00 2001 From: realityone Date: Mon, 24 Oct 2016 15:52:48 +0800 Subject: [PATCH] return an error on overlay subnet is overlapped with hosts Signed-off-by: realityone --- libnetwork/drivers/overlay/ov_network.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libnetwork/drivers/overlay/ov_network.go b/libnetwork/drivers/overlay/ov_network.go index 703d13f9a5..122c3f6b1b 100644 --- a/libnetwork/drivers/overlay/ov_network.go +++ b/libnetwork/drivers/overlay/ov_network.go @@ -402,7 +402,7 @@ func (n *network) getBridgeNamePrefix(s *subnet) string { return "ov-" + fmt.Sprintf("%06x", n.vxlanID(s)) } -func isOverlap(nw *net.IPNet) bool { +func checkOverlap(nw *net.IPNet) error { var nameservers []string if rc, err := resolvconf.Get(); err == nil { @@ -410,14 +410,14 @@ func isOverlap(nw *net.IPNet) bool { } if err := netutils.CheckNameserverOverlaps(nameservers, nw); err != nil { - return true + return fmt.Errorf("overlay subnet %s failed check with nameserver: %v: %v", nw.String(), nameservers, err) } if err := netutils.CheckRouteOverlaps(nw); err != nil { - return true + return fmt.Errorf("overlay subnet %s failed check with host route table: %v", nw.String(), err) } - return false + return nil } func (n *network) restoreSubnetSandbox(s *subnet, brName, vxlanName string) error { @@ -456,8 +456,8 @@ func (n *network) setupSubnetSandbox(s *subnet, brName, vxlanName string) error // Try to delete the vxlan interface by vni if already present deleteVxlanByVNI("", n.vxlanID(s)) - if isOverlap(s.subnetIP) { - return fmt.Errorf("overlay subnet %s has conflicts in the host while running in host mode", s.subnetIP.String()) + if err := checkOverlap(s.subnetIP); err != nil { + return err } }