Преглед изворни кода

wgengine/netstack: standardize var names in UpdateNetstackIPs

Updates #cleanup

Signed-off-by: Maisem Ali <[email protected]>
Maisem Ali пре 2 година
родитељ
комит
d0f2c0664b
1 измењених фајлова са 37 додато и 31 уклоњено
  1. 37 31
      wgengine/netstack/netstack.go

+ 37 - 31
wgengine/netstack/netstack.go

@@ -333,7 +333,7 @@ func (ns *Impl) UpdateNetstackIPs(nm *netmap.NetworkMap) {
 		ns.atomicIsLocalIPFunc.Store(tsaddr.FalseContainsIPFunc())
 	}
 
-	oldIPs := make(map[netip.Prefix]bool)
+	oldPfx := make(map[netip.Prefix]bool)
 	for _, protocolAddr := range ns.ipstack.AllAddresses()[nicID] {
 		ap := protocolAddr.AddressWithPrefix
 		ip := netaddrIPFromNetstackIP(ap.Address)
@@ -343,71 +343,77 @@ func (ns *Impl) UpdateNetstackIPs(nm *netmap.NetworkMap) {
 			// ours to delete.
 			continue
 		}
-		oldIPs[netip.PrefixFrom(ip, ap.PrefixLen)] = true
+		p := netip.PrefixFrom(ip, ap.PrefixLen)
+		oldPfx[p] = true
 	}
-	newIPs := make(map[netip.Prefix]bool)
+	newPfx := make(map[netip.Prefix]bool)
 
 	if selfNode.Valid() {
 		for i := range selfNode.Addresses().LenIter() {
-			ipp := selfNode.Addresses().At(i)
-			newIPs[ipp] = true
+			p := selfNode.Addresses().At(i)
+			newPfx[p] = true
 		}
 		if ns.ProcessSubnets {
 			for i := range selfNode.AllowedIPs().LenIter() {
-				ipp := selfNode.AllowedIPs().At(i)
-				newIPs[ipp] = true
+				p := selfNode.AllowedIPs().At(i)
+				newPfx[p] = true
 			}
 		}
 	}
 
-	ipsToBeAdded := make(map[netip.Prefix]bool)
-	for ipp := range newIPs {
-		if !oldIPs[ipp] {
-			ipsToBeAdded[ipp] = true
+	pfxToAdd := make(map[netip.Prefix]bool)
+	for p := range newPfx {
+		if !oldPfx[p] {
+			pfxToAdd[p] = true
 		}
 	}
-	ipsToBeRemoved := make(map[netip.Prefix]bool)
-	for ip := range oldIPs {
-		if !newIPs[ip] {
-			ipsToBeRemoved[ip] = true
+	pfxToRemove := make(map[netip.Prefix]bool)
+	for p := range oldPfx {
+		if !newPfx[p] {
+			pfxToRemove[p] = true
 		}
 	}
 	ns.mu.Lock()
 	for ip := range ns.connsOpenBySubnetIP {
-		delete(ipsToBeRemoved, netip.PrefixFrom(ip, ip.BitLen()))
+		// TODO(maisem): this looks like a bug, remove or document. It seems as
+		// though we might end up either leaking the address on the netstack
+		// NIC, or where we do accounting for connsOpenBySubnetIP from 1 to 0,
+		// we might end up removing the address from the netstack NIC that was
+		// still being advertised.
+		delete(pfxToRemove, netip.PrefixFrom(ip, ip.BitLen()))
 	}
 	ns.mu.Unlock()
 
-	for ipp := range ipsToBeRemoved {
-		err := ns.ipstack.RemoveAddress(nicID, tcpip.AddrFromSlice(ipp.Addr().AsSlice()))
+	for p := range pfxToRemove {
+		err := ns.ipstack.RemoveAddress(nicID, tcpip.AddrFromSlice(p.Addr().AsSlice()))
 		if err != nil {
-			ns.logf("netstack: could not deregister IP %s: %v", ipp, err)
+			ns.logf("netstack: could not deregister IP %s: %v", p, err)
 		} else {
-			ns.logf("[v2] netstack: deregistered IP %s", ipp)
+			ns.logf("[v2] netstack: deregistered IP %s", p)
 		}
 	}
-	for ipp := range ipsToBeAdded {
-		if !ipp.IsValid() {
-			ns.logf("netstack: [unexpected] skipping invalid IP (%v/%v)", ipp.Addr(), ipp.Bits())
+	for p := range pfxToAdd {
+		if !p.IsValid() {
+			ns.logf("netstack: [unexpected] skipping invalid IP (%v/%v)", p.Addr(), p.Bits())
 			continue
 		}
-		pa := tcpip.ProtocolAddress{
-			AddressWithPrefix: ipPrefixToAddressWithPrefix(ipp),
+		tcpAddr := tcpip.ProtocolAddress{
+			AddressWithPrefix: ipPrefixToAddressWithPrefix(p),
 		}
-		if ipp.Addr().Is6() {
-			pa.Protocol = ipv6.ProtocolNumber
+		if p.Addr().Is6() {
+			tcpAddr.Protocol = ipv6.ProtocolNumber
 		} else {
-			pa.Protocol = ipv4.ProtocolNumber
+			tcpAddr.Protocol = ipv4.ProtocolNumber
 		}
 		var tcpErr tcpip.Error // not error
-		tcpErr = ns.ipstack.AddProtocolAddress(nicID, pa, stack.AddressProperties{
+		tcpErr = ns.ipstack.AddProtocolAddress(nicID, tcpAddr, stack.AddressProperties{
 			PEB:        stack.CanBePrimaryEndpoint, // zero value default
 			ConfigType: stack.AddressConfigStatic,  // zero value default
 		})
 		if tcpErr != nil {
-			ns.logf("netstack: could not register IP %s: %v", ipp, tcpErr)
+			ns.logf("netstack: could not register IP %s: %v", p, tcpErr)
 		} else {
-			ns.logf("[v2] netstack: registered IP %s", ipp)
+			ns.logf("[v2] netstack: registered IP %s", p)
 		}
 	}
 }