resolve the bug when cluster CIDR is not /8
We will have the rigth formula to generate correct maxCIDRs now. Previous code assume cluster CIDR is /8 which may not be true. Now it generates maxCIDR based on the info of cluster IP.
This commit is contained in:
		@@ -19,6 +19,7 @@ package node
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
						"math"
 | 
				
			||||||
	"net"
 | 
						"net"
 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
@@ -211,8 +212,9 @@ func (nc *NodeController) generateAvailableCIDRs() {
 | 
				
			|||||||
	nc.generatedCIDR = true
 | 
						nc.generatedCIDR = true
 | 
				
			||||||
	// Generate all available CIDRs here, since there will not be manay
 | 
						// Generate all available CIDRs here, since there will not be manay
 | 
				
			||||||
	// available CIDRs. Set will be small, it will use less than 1MB memory
 | 
						// available CIDRs. Set will be small, it will use less than 1MB memory
 | 
				
			||||||
	cidrIP := nc.clusterCIDR.IP.To4()
 | 
					
 | 
				
			||||||
	nc.maxCIDRs = (256-int(cidrIP[1]))*256 - int(cidrIP[2])
 | 
						cidrSize, _ := nc.clusterCIDR.Mask.Size()
 | 
				
			||||||
 | 
						nc.maxCIDRs = int(math.Pow(2, (float64)(24-cidrSize)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for i := 0; i <= nc.maxCIDRs; i++ {
 | 
						for i := 0; i <= nc.maxCIDRs; i++ {
 | 
				
			||||||
		nc.availableCIDRs.Insert(i)
 | 
							nc.availableCIDRs.Insert(i)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user