diff --git a/libnetwork/drivers/bridge/setup_ipv4.go b/libnetwork/drivers/bridge/setup_ipv4.go index b21fb82197..47b5d885f0 100644 --- a/libnetwork/drivers/bridge/setup_ipv4.go +++ b/libnetwork/drivers/bridge/setup_ipv4.go @@ -35,7 +35,7 @@ func init() { log.Errorf("Failed to parse address %s", addr) continue } - net.IP = ip + net.IP = ip.To4() bridgeNetworks = append(bridgeNetworks, net) } } diff --git a/libnetwork/netutils/utils.go b/libnetwork/netutils/utils.go index 587c86eafa..05ce372f22 100644 --- a/libnetwork/netutils/utils.go +++ b/libnetwork/netutils/utils.go @@ -192,7 +192,9 @@ func CheckRouteOverlaps(toCheck *net.IPNet) error { // NetworkOverlaps detects overlap between one IPNet and another func NetworkOverlaps(netX *net.IPNet, netY *net.IPNet) bool { - if len(netX.IP) == len(netY.IP) { + // Check if both netX and netY are ipv4 or ipv6 + if (netX.IP.To4() != nil && netY.IP.To4() != nil) || + (netX.IP.To4() == nil && netY.IP.To4() == nil) { if firstIP, _ := NetworkRange(netX); netY.Contains(firstIP) { return true }