|
@@ -2,6 +2,7 @@ package docker
|
|
|
|
|
|
import (
|
|
import (
|
|
"fmt"
|
|
"fmt"
|
|
|
|
+ "math/rand"
|
|
"net"
|
|
"net"
|
|
)
|
|
)
|
|
|
|
|
|
@@ -15,8 +16,10 @@ type NetworkInterface struct {
|
|
Gateway net.IP
|
|
Gateway net.IP
|
|
}
|
|
}
|
|
|
|
|
|
-func allocateIPAddress() string {
|
|
|
|
- return "10.0.3.2"
|
|
|
|
|
|
+func allocateIPAddress(network *net.IPNet) net.IP {
|
|
|
|
+ ip := network.IP.Mask(network.Mask)
|
|
|
|
+ ip[3] = byte(rand.Intn(254))
|
|
|
|
+ return ip
|
|
}
|
|
}
|
|
|
|
|
|
func getBridgeAddr(name string) (net.Addr, error) {
|
|
func getBridgeAddr(name string) (net.Addr, error) {
|
|
@@ -52,7 +55,7 @@ func allocateNetwork() (*NetworkInterface, error) {
|
|
bridge := bridgeAddr.(*net.IPNet)
|
|
bridge := bridgeAddr.(*net.IPNet)
|
|
ipPrefixLen, _ := bridge.Mask.Size()
|
|
ipPrefixLen, _ := bridge.Mask.Size()
|
|
iface := &NetworkInterface{
|
|
iface := &NetworkInterface{
|
|
- IpAddress: allocateIPAddress(),
|
|
|
|
|
|
+ IpAddress: allocateIPAddress(bridge).String(),
|
|
IpPrefixLen: ipPrefixLen,
|
|
IpPrefixLen: ipPrefixLen,
|
|
Gateway: bridge.IP,
|
|
Gateway: bridge.IP,
|
|
}
|
|
}
|