mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
7391338323
currently ipamutils package uses apis which are linux specific and makes windows compile error out. Separated the OS specific apis into linux and windows files to diverge the implementation. Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
42 lines
1.3 KiB
Go
42 lines
1.3 KiB
Go
// Package ipamutils provides utililty functions for ipam management
|
|
package ipamutils
|
|
|
|
import "net"
|
|
|
|
var (
|
|
// PredefinedBroadNetworks contains a list of 31 IPv4 private networks with host size 16 and 12
|
|
// (172.17-31.x.x/16, 192.168.x.x/20) which do not overlap with the networks in `PredefinedGranularNetworks`
|
|
PredefinedBroadNetworks []*net.IPNet
|
|
// PredefinedGranularNetworks contains a list of 64K IPv4 private networks with host size 8
|
|
// (10.x.x.x/24) which do not overlap with the networks in `PredefinedBroadNetworks`
|
|
PredefinedGranularNetworks []*net.IPNet
|
|
)
|
|
|
|
func init() {
|
|
PredefinedBroadNetworks = initBroadPredefinedNetworks()
|
|
PredefinedGranularNetworks = initGranularPredefinedNetworks()
|
|
}
|
|
|
|
func initBroadPredefinedNetworks() []*net.IPNet {
|
|
pl := make([]*net.IPNet, 0, 31)
|
|
mask := []byte{255, 255, 0, 0}
|
|
for i := 17; i < 32; i++ {
|
|
pl = append(pl, &net.IPNet{IP: []byte{172, byte(i), 0, 0}, Mask: mask})
|
|
}
|
|
mask20 := []byte{255, 255, 240, 0}
|
|
for i := 0; i < 16; i++ {
|
|
pl = append(pl, &net.IPNet{IP: []byte{192, 168, byte(i << 4), 0}, Mask: mask20})
|
|
}
|
|
return pl
|
|
}
|
|
|
|
func initGranularPredefinedNetworks() []*net.IPNet {
|
|
pl := make([]*net.IPNet, 0, 256*256)
|
|
mask := []byte{255, 255, 255, 0}
|
|
for i := 0; i < 256; i++ {
|
|
for j := 0; j < 256; j++ {
|
|
pl = append(pl, &net.IPNet{IP: []byte{10, byte(i), byte(j), 0}, Mask: mask})
|
|
}
|
|
}
|
|
return pl
|
|
}
|