Merge pull request #19254 from aboch/v6b
Account docker0 IPv6 address on daemon start
This commit is contained in:
commit
7ea65da7ef
1 changed files with 21 additions and 10 deletions
|
@ -556,12 +556,16 @@ func initBridgeDriver(controller libnetwork.NetworkController, config *Config) e
|
|||
netOption[bridge.DefaultBindingIP] = config.Bridge.DefaultIP.String()
|
||||
}
|
||||
|
||||
ipamV4Conf := libnetwork.IpamConf{}
|
||||
var (
|
||||
ipamV4Conf *libnetwork.IpamConf
|
||||
ipamV6Conf *libnetwork.IpamConf
|
||||
)
|
||||
|
||||
ipamV4Conf.AuxAddresses = make(map[string]string)
|
||||
ipamV4Conf = &libnetwork.IpamConf{AuxAddresses: make(map[string]string)}
|
||||
|
||||
if nw, _, err := ipamutils.ElectInterfaceAddresses(bridgeName); err == nil {
|
||||
ipamV4Conf.PreferredPool = nw.String()
|
||||
nw, nw6List, err := ipamutils.ElectInterfaceAddresses(bridgeName)
|
||||
if err == nil {
|
||||
ipamV4Conf.PreferredPool = types.GetIPNetCanonical(nw).String()
|
||||
hip, _ := types.GetHostPartIP(nw.IP, nw.Mask)
|
||||
if hip.IsGlobalUnicast() {
|
||||
ipamV4Conf.Gateway = nw.IP.String()
|
||||
|
@ -592,10 +596,7 @@ func initBridgeDriver(controller libnetwork.NetworkController, config *Config) e
|
|||
ipamV4Conf.AuxAddresses["DefaultGatewayIPv4"] = config.Bridge.DefaultGatewayIPv4.String()
|
||||
}
|
||||
|
||||
var (
|
||||
ipamV6Conf *libnetwork.IpamConf
|
||||
deferIPv6Alloc bool
|
||||
)
|
||||
var deferIPv6Alloc bool
|
||||
if config.Bridge.FixedCIDRv6 != "" {
|
||||
_, fCIDRv6, err := net.ParseCIDR(config.Bridge.FixedCIDRv6)
|
||||
if err != nil {
|
||||
|
@ -615,6 +616,16 @@ func initBridgeDriver(controller libnetwork.NetworkController, config *Config) e
|
|||
ipamV6Conf = &libnetwork.IpamConf{AuxAddresses: make(map[string]string)}
|
||||
}
|
||||
ipamV6Conf.PreferredPool = fCIDRv6.String()
|
||||
|
||||
// In case the --fixed-cidr-v6 is specified and the current docker0 bridge IPv6
|
||||
// address belongs to the same network, we need to inform libnetwork about it, so
|
||||
// that it can be reserved with IPAM and it will not be given away to somebody else
|
||||
for _, nw6 := range nw6List {
|
||||
if fCIDRv6.Contains(nw6.IP) {
|
||||
ipamV6Conf.Gateway = nw6.IP.String()
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if config.Bridge.DefaultGatewayIPv6 != nil {
|
||||
|
@ -624,13 +635,13 @@ func initBridgeDriver(controller libnetwork.NetworkController, config *Config) e
|
|||
ipamV6Conf.AuxAddresses["DefaultGatewayIPv6"] = config.Bridge.DefaultGatewayIPv6.String()
|
||||
}
|
||||
|
||||
v4Conf := []*libnetwork.IpamConf{&ipamV4Conf}
|
||||
v4Conf := []*libnetwork.IpamConf{ipamV4Conf}
|
||||
v6Conf := []*libnetwork.IpamConf{}
|
||||
if ipamV6Conf != nil {
|
||||
v6Conf = append(v6Conf, ipamV6Conf)
|
||||
}
|
||||
// Initialize default network on "bridge" with the same name
|
||||
_, err := controller.NewNetwork("bridge", "bridge",
|
||||
_, err = controller.NewNetwork("bridge", "bridge",
|
||||
libnetwork.NetworkOptionGeneric(options.Generic{
|
||||
netlabel.GenericData: netOption,
|
||||
netlabel.EnableIPv6: config.Bridge.EnableIPv6,
|
||||
|
|
Loading…
Reference in a new issue