@@ -42,26 +42,6 @@ const (
4242)
4343
4444var (
45- // startingVirtualIP is the start of the virtual IP range we assign to services.
46- // The effective CIDR range is startingVirtualIP to (startingVirtualIP + virtualIPMaxOffset).
47- startingVirtualIP = net.IP {240 , 0 , 0 , 0 }
48-
49- virtualIPMaxOffset = net.IP {15 , 255 , 255 , 254 }
50-
51- startingVirtualIPv6 = net.IP {
52- 0x20 , 0x00 , 0x00 , 0x00 ,
53- 0x00 , 0x00 , 0x00 , 0x00 ,
54- 0x00 , 0x00 , 0x00 , 0x00 ,
55- 0x00 , 0x00 , 0x00 , 0x00 ,
56- }
57-
58- virtualIPv6MaxOffset = net.IP {
59- 0x1F , 0xFF , 0xFF , 0xFF ,
60- 0xFF , 0xFF , 0xFF , 0xFF ,
61- 0xFF , 0xFF , 0xFF , 0xFF ,
62- 0xFF , 0xFF , 0xFF , 0xFF ,
63- }
64-
6545 ErrNodeNotFound = errors .New ("node not found" )
6646)
6747
@@ -1074,9 +1054,10 @@ func assignServiceVirtualIP(tx WriteTxn, idx uint64, psn structs.PeeredServiceNa
10741054 break
10751055 }
10761056 }
1077- maxIPOffset := virtualIPMaxOffset
1078- if p := net .ParseIP (newEntry .IP .String ()); p == nil || p .To4 () == nil {
1079- maxIPOffset = virtualIPv6MaxOffset
1057+ cfg := currentVirtualIPConfig ()
1058+ maxIPOffset := cfg .maxOffsetFor (newEntry .IP )
1059+ if maxIPOffset == nil {
1060+ return "" , fmt .Errorf ("failed to determine max virtual IP offset for %q" , newEntry .IP .String ())
10801061 }
10811062 // Out of virtual IPs, fail registration.
10821063 if newEntry .IP .Equal (maxIPOffset ) {
@@ -1232,16 +1213,17 @@ func updateVirtualIPMaxIndexes(txn WriteTxn, idx uint64, partition, peerName str
12321213func addIPOffset (b net.IP ) (net.IP , error ) {
12331214 var vip net.IP
12341215 var err error
1216+ cfg := currentVirtualIPConfig ()
12351217
12361218 ds , err := netutil .IsDualStack (nil , true )
12371219 if err != nil {
12381220 return nil , fmt .Errorf ("failed to determine if dual-stack mode is enabled: %w" , err )
12391221 }
12401222
12411223 if ds {
1242- vip , err = addIPv6Offset (startingVirtualIPv6 , b )
1224+ vip , err = addIPv6Offset (cfg . startingIPv6 , b )
12431225 } else {
1244- vip , err = addIPv4Offset (startingVirtualIP , b )
1226+ vip , err = addIPv4Offset (cfg . startingIPv4 , b )
12451227 }
12461228 return vip , err
12471229}
0 commit comments