Jelajahi Sumber

Network: Simple random IP allocation on the bridge network.

Andrea Luzzardi 12 tahun lalu
induk
melakukan
6124c5eb31
1 mengubah file dengan 6 tambahan dan 3 penghapusan
  1. 6 3
      network.go

+ 6 - 3
network.go

@@ -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,
 	}
 	}