windows: do not forgot IPAM configuration when re-creating networks

Signed-off-by: Olli Janatuinen <olli.janatuinen@gmail.com>
This commit is contained in:
Olli Janatuinen
2025-08-06 09:34:22 -07:00
parent 28df781514
commit dcaf8893a0

View File

@@ -265,7 +265,7 @@ func (daemon *Daemon) initNetworkController(daemonCfg *config.Config, activeSand
if !found {
// non-default nat networks should be re-created if missing from HNS
if v.Type() == "nat" && v.Name() != networktypes.NetworkNat {
_, _, v4Conf, v6Conf := v.IpamConfig()
ipamDriver, ipamOptions, v4Conf, v6Conf := v.IpamConfig()
netOption := map[string]string{}
for k, v := range v.DriverOptions() {
if k != winlibnetwork.NetworkName && k != winlibnetwork.HNSID {
@@ -284,7 +284,7 @@ func (daemon *Daemon) initNetworkController(daemonCfg *config.Config, activeSand
libnetwork.NetworkOptionGeneric(options.Generic{
netlabel.GenericData: netOption,
}),
libnetwork.NetworkOptionIpam("default", "", v4Conf, v6Conf, nil),
libnetwork.NetworkOptionIpam(ipamDriver, "", v4Conf, v6Conf, ipamOptions),
libnetwork.NetworkOptionLabels(v.Labels()),
)
if err != nil {
@@ -342,6 +342,8 @@ func (daemon *Daemon) initNetworkController(daemonCfg *config.Config, activeSand
drvOptions := make(map[string]string)
var labels map[string]string
nid := ""
ipamDriver := "default"
var ipamOptions map[string]string
if n != nil {
nid = n.ID()
@@ -350,6 +352,8 @@ func (daemon *Daemon) initNetworkController(daemonCfg *config.Config, activeSand
continue
}
v.Name = n.Name()
ipamDriver, ipamOptions, _, _ = n.IpamConfig()
// This will not cause network delete from HNS as the network
// is not yet populated in the libnetwork windows driver
@@ -406,7 +410,7 @@ func (daemon *Daemon) initNetworkController(daemonCfg *config.Config, activeSand
netlabel.GenericData: netOption,
netlabel.EnableIPv4: true,
}),
libnetwork.NetworkOptionIpam("default", "", v4Conf, v6Conf, nil),
libnetwork.NetworkOptionIpam(ipamDriver, "", v4Conf, v6Conf, ipamOptions),
libnetwork.NetworkOptionLabels(labels),
)
if err != nil {