@@ -33,6 +33,10 @@ import (
3333 netutils "k8s.io/utils/net"
3434)
3535
36+ const (
37+ maxAllowedNodeCIDRs = 2
38+ )
39+
3640var (
3741 // defaultNodeMaskCIDRIPv4 is default mask size for IPv4 node cidr
3842 defaultNodeMaskCIDRIPv4 = 24
@@ -52,7 +56,7 @@ func startNodeIpamController(stopCh <-chan struct{}, cloud cloudprovider.Interfa
5256 // failure: bad cidrs in config
5357 clusterCIDRs , dualStack , err := processCIDRs (Options .ClusterCIDRIPv4 )
5458 if err != nil {
55- return fmt .Errorf ("processCIDRs failed: %v " , err )
59+ return fmt .Errorf ("processCIDRs failed: %w " , err )
5660 }
5761
5862 // failure: more than one cidr but they are not configured as dual stack
@@ -61,8 +65,8 @@ func startNodeIpamController(stopCh <-chan struct{}, cloud cloudprovider.Interfa
6165 }
6266
6367 // failure: more than cidrs is not allowed even with dual stack
64- if len (clusterCIDRs ) > 2 {
65- return fmt .Errorf ("len of clusters is:%v > more than max allowed of 2 " , len (clusterCIDRs ))
68+ if len (clusterCIDRs ) > maxAllowedNodeCIDRs {
69+ return fmt .Errorf ("len of clusters is:%v > more than max allowed of %d " , len (clusterCIDRs ), maxAllowedNodeCIDRs )
6670 }
6771
6872 /* TODO: uncomment and fix if we want to support service cidr overlap with nodecidr
@@ -94,10 +98,7 @@ func startNodeIpamController(stopCh <-chan struct{}, cloud cloudprovider.Interfa
9498 }
9599 */
96100
97- nodeCIDRMaskSizes , err := setNodeCIDRMaskSizes (clusterCIDRs )
98- if err != nil {
99- return fmt .Errorf ("setNodeCIDRMaskSizes failed: %v" , err )
100- }
101+ nodeCIDRMaskSizes := setNodeCIDRMaskSizes (clusterCIDRs )
101102
102103 ctx := wait .ContextForChannel (stopCh )
103104
@@ -110,7 +111,7 @@ func startNodeIpamController(stopCh <-chan struct{}, cloud cloudprovider.Interfa
110111 serviceCIDR ,
111112 secondaryServiceCIDR ,
112113 nodeCIDRMaskSizes ,
113- ipam .CIDRAllocatorType ( ipam . RangeAllocatorType ) ,
114+ ipam .RangeAllocatorType ,
114115 )
115116 if err != nil {
116117 return err
@@ -134,12 +135,15 @@ func processCIDRs(cidrsList string) ([]*net.IPNet, bool, error) {
134135
135136 // if cidrs has an error then the previous call will fail
136137 // safe to ignore error checking on next call
137- dualstack , _ := netutils .IsDualStackCIDRs (cidrs )
138+ dualstack , err := netutils .IsDualStackCIDRs (cidrs )
139+ if err != nil {
140+ return nil , false , fmt .Errorf ("failed to perform dualstack check on cidrs: %w" , err )
141+ }
138142
139143 return cidrs , dualstack , nil
140144}
141145
142- func setNodeCIDRMaskSizes (clusterCIDRs []* net.IPNet ) ( []int , error ) {
146+ func setNodeCIDRMaskSizes (clusterCIDRs []* net.IPNet ) []int {
143147 sortedSizes := func (maskSizeIPv4 , maskSizeIPv6 int ) []int {
144148 nodeMaskCIDRs := make ([]int , len (clusterCIDRs ))
145149
@@ -159,5 +163,5 @@ func setNodeCIDRMaskSizes(clusterCIDRs []*net.IPNet) ([]int, error) {
159163 if Options .NodeCIDRMaskSizeIPv6 != 0 {
160164 defaultNodeMaskCIDRIPv6 = Options .NodeCIDRMaskSizeIPv6
161165 }
162- return sortedSizes (defaultNodeMaskCIDRIPv4 , defaultNodeMaskCIDRIPv6 ), nil
166+ return sortedSizes (defaultNodeMaskCIDRIPv4 , defaultNodeMaskCIDRIPv6 )
163167}
0 commit comments