Browse code

Unmap more netip.Addr vars created using AddrFromSlice

Signed-off-by: Rob Murray <rob.murray@docker.com>

Rob Murray authored on 2025/11/25 01:51:14
Showing 8 changed files
... ...
@@ -825,7 +825,7 @@ func migrateHostGatewayIP(config *Config) {
825 825
 	hgip := config.HostGatewayIP //nolint:staticcheck // ignore SA1019: migrating to HostGatewayIPs.
826 826
 	if hgip != nil {
827 827
 		addr, _ := netip.AddrFromSlice(hgip)
828
-		config.HostGatewayIPs = []netip.Addr{addr}
828
+		config.HostGatewayIPs = []netip.Addr{addr.Unmap()}
829 829
 		config.HostGatewayIP = nil //nolint:staticcheck // ignore SA1019: clearing old value.
830 830
 	}
831 831
 }
... ...
@@ -891,7 +891,7 @@ func setHostGatewayIP(controller *libnetwork.Controller, config *config.Config)
891 891
 		v4Info, v6Info := n.IpamInfo()
892 892
 		if len(v4Info) > 0 {
893 893
 			addr, _ := netip.AddrFromSlice(v4Info[0].Gateway.IP)
894
-			config.HostGatewayIPs = append(config.HostGatewayIPs, addr)
894
+			config.HostGatewayIPs = append(config.HostGatewayIPs, addr.Unmap())
895 895
 		}
896 896
 		if len(v6Info) > 0 {
897 897
 			addr, _ := netip.AddrFromSlice(v6Info[0].Gateway.IP)
... ...
@@ -1796,10 +1796,12 @@ func (d *driver) link(network *bridgeNetwork, endpoint *bridgeEndpoint, enable b
1796 1796
 			if !ok {
1797 1797
 				return fmt.Errorf("invalid parent endpoint IP: %s", parentEndpoint.addr.IP)
1798 1798
 			}
1799
+			parentAddr = parentAddr.Unmap()
1799 1800
 			childAddr, ok := netip.AddrFromSlice(endpoint.addr.IP)
1800 1801
 			if !ok {
1801 1802
 				return fmt.Errorf("invalid parent endpoint IP: %s", endpoint.addr.IP)
1802 1803
 			}
1804
+			childAddr = childAddr.Unmap()
1803 1805
 
1804 1806
 			if enable {
1805 1807
 				if err := network.firewallerNetwork.AddLink(context.TODO(), parentAddr, childAddr, ec.ExposedPorts); err != nil {
... ...
@@ -1826,10 +1828,12 @@ func (d *driver) link(network *bridgeNetwork, endpoint *bridgeEndpoint, enable b
1826 1826
 		if !ok {
1827 1827
 			return fmt.Errorf("invalid parent endpoint IP: %s", endpoint.addr.IP)
1828 1828
 		}
1829
+		parentAddr = parentAddr.Unmap()
1829 1830
 		childAddr, ok := netip.AddrFromSlice(childEndpoint.addr.IP)
1830 1831
 		if !ok {
1831 1832
 			return fmt.Errorf("invalid parent endpoint IP: %s", childEndpoint.addr.IP)
1832 1833
 		}
1834
+		childAddr = childAddr.Unmap()
1833 1835
 
1834 1836
 		if enable {
1835 1837
 			if err := network.firewallerNetwork.AddLink(context.TODO(), parentAddr, childAddr, childEndpoint.extConnConfig.ExposedPorts); err != nil {
... ...
@@ -1010,7 +1010,7 @@ func (ep *Endpoint) getEtcHostsAddrs() []netip.Addr {
1010 1010
 	var addresses []netip.Addr
1011 1011
 	if ep.iface.addr != nil {
1012 1012
 		if addr, ok := netip.AddrFromSlice(ep.iface.addr.IP); ok {
1013
-			addresses = append(addresses, addr)
1013
+			addresses = append(addresses, addr.Unmap())
1014 1014
 		}
1015 1015
 	}
1016 1016
 	if ep.iface.addrv6 != nil {
... ...
@@ -64,7 +64,7 @@ func NewPortDriverClient(ctx context.Context) (*PortDriverClient, error) {
64 64
 			return nil, fmt.Errorf("unable to use child IP %s from network driver (%q)",
65 65
 				info.NetworkDriver.ChildIP, info.NetworkDriver.Driver)
66 66
 		}
67
-		pdc.childIP = childIP
67
+		pdc.childIP = childIP.Unmap()
68 68
 	}
69 69
 
70 70
 	pdc.protos = make(map[string]struct{}, len(info.PortDriver.Protos))
... ...
@@ -302,7 +302,7 @@ func (nDB *NetworkDB) rejoinClusterBootStrap() {
302 302
 					continue
303 303
 				}
304 304
 				nodeIP, _ := netip.AddrFromSlice(node.Addr)
305
-				if bootstrapIP == netip.AddrPortFrom(nodeIP, node.Port) {
305
+				if bootstrapIP == netip.AddrPortFrom(nodeIP.Unmap(), node.Port) {
306 306
 					// One of the bootstrap nodes (and not myself) is part of the cluster, return
307 307
 					nDB.RUnlock()
308 308
 					return
... ...
@@ -64,7 +64,7 @@ func (pa *OSAllocator) AllocateHostPort(hostIP net.IP, proto types.Protocol, hos
64 64
 		return 0, fmt.Errorf("invalid HostIP: %s", hostIP)
65 65
 	}
66 66
 
67
-	hAddrPort := netip.AddrPortFrom(addr, uint16(allocatedHostPort))
67
+	hAddrPort := netip.AddrPortFrom(addr.Unmap(), uint16(allocatedHostPort))
68 68
 	if _, exists := pa.osListeners[proto][hAddrPort]; exists {
69 69
 		return 0, ErrPortMappedForIP
70 70
 	}
... ...
@@ -132,7 +132,7 @@ func (pa *OSAllocator) Deallocate(hostIP net.IP, proto types.Protocol, hostPort
132 132
 		return ErrPortNotMapped
133 133
 	}
134 134
 
135
-	hAddrPort := netip.AddrPortFrom(addr, uint16(hostPort))
135
+	hAddrPort := netip.AddrPortFrom(addr.Unmap(), uint16(hostPort))
136 136
 	osListener, exists := pa.osListeners[proto][hAddrPort]
137 137
 	if !exists {
138 138
 		return ErrPortNotMapped
... ...
@@ -95,7 +95,7 @@ func (pm PortMapper) MapPorts(ctx context.Context, cfg []portmapperapi.PortBindi
95 95
 		pb.PortBinding.HostPortEnd = pb.HostPort
96 96
 
97 97
 		childHIP, _ := netip.AddrFromSlice(cfg[i].ChildHostIP)
98
-		pb.NAT = netip.AddrPortFrom(childHIP, pb.PortBinding.HostPort)
98
+		pb.NAT = netip.AddrPortFrom(childHIP.Unmap(), pb.PortBinding.HostPort)
99 99
 
100 100
 		bindings = append(bindings, pb)
101 101
 	}
... ...
@@ -133,7 +133,7 @@ func setChildHostIP(pdc PortDriverClient, req portmapperapi.PortBindingReq) port
133 133
 		return req
134 134
 	}
135 135
 	hip, _ := netip.AddrFromSlice(req.HostIP)
136
-	req.ChildHostIP = pdc.ChildHostIP(hip).AsSlice()
136
+	req.ChildHostIP = pdc.ChildHostIP(hip.Unmap()).AsSlice()
137 137
 	return req
138 138
 }
139 139
 
... ...
@@ -153,7 +153,7 @@ func configPortDriver(ctx context.Context, pbs []portmapperapi.PortBinding, pdc
153 153
 			if !ok {
154 154
 				return fmt.Errorf("invalid child host IP address %s in %s", b.ChildHostIP, b)
155 155
 			}
156
-			pbs[i].PortDriverRemove, err = pdc.AddPort(ctx, b.Proto.String(), hip, chip, int(b.HostPort))
156
+			pbs[i].PortDriverRemove, err = pdc.AddPort(ctx, b.Proto.String(), hip.Unmap(), chip.Unmap(), int(b.HostPort))
157 157
 			if err != nil {
158 158
 				var pErr *rlkclient.ProtocolUnsupportedError
159 159
 				if errors.As(err, &pErr) {