{"record":{"id":"ec87c0e77bb99c1c","repo":"kubernetes/kops","slug":"error-parsing-nonmasqueradecidr-q-v","errorCode":null,"errorMessage":"error parsing NonMasqueradeCIDR %q: %v","messagePattern":"error parsing NonMasqueradeCIDR %q: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/populate_cluster_spec.go","lineNumber":368,"sourceCode":"\t// completed.Topology.Bastion = c.InputCluster.Spec.Topology.Bastion\n\n\tif errs := validation.ValidateCluster(completed, true, clientset.VFSContext()); len(errs) != 0 {\n\t\treturn fmt.Errorf(\"completed cluster failed validation: %v\", errs.ToAggregate())\n\t}\n\n\tc.fullCluster = completed\n\treturn nil\n}\n\nfunc (c *populateClusterSpec) assignSubnets(cluster *kopsapi.Cluster) error {\n\tif cluster.Spec.Networking.NonMasqueradeCIDR == \"\" {\n\t\tklog.Warningf(\"NonMasqueradeCIDR not set; can't auto-assign dependent subnets\")\n\t\treturn nil\n\t}\n\n\t_, nonMasqueradeCIDR, err := net.ParseCIDR(cluster.Spec.Networking.NonMasqueradeCIDR)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error parsing NonMasqueradeCIDR %q: %v\", cluster.Spec.Networking.NonMasqueradeCIDR, err)\n\t}\n\tnmOnes, nmBits := nonMasqueradeCIDR.Mask.Size()\n\n\tif cluster.Spec.KubeControllerManager == nil {\n\t\tcluster.Spec.KubeControllerManager = &kopsapi.KubeControllerManagerConfig{}\n\t}\n\n\tif cluster.Spec.Networking.PodCIDR == \"\" && nmBits == 32 {\n\t\t// Allocate as big a range as possible: the NonMasqueradeCIDR mask + 1, with a '1' in the extra bit\n\t\tip := nonMasqueradeCIDR.IP.Mask(nonMasqueradeCIDR.Mask)\n\t\tip[nmOnes/8] |= 128 >> (nmOnes % 8)\n\t\tcidr := net.IPNet{IP: ip, Mask: net.CIDRMask(nmOnes+1, nmBits)}\n\t\tcluster.Spec.Networking.PodCIDR = cidr.String()\n\t\tklog.V(2).Infof(\"Defaulted PodCIDR to %v\", cluster.Spec.Networking.PodCIDR)\n\t}\n\n\tif cluster.Spec.Networking.ServiceClusterIPRange == \"\" {\n\t\tif nmBits > 32 {","sourceCodeStart":350,"sourceCodeEnd":386,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/populate_cluster_spec.go#L350-L386","documentation":"The cluster's networking.nonMasqueradeCIDR is set but is not a valid CIDR, so dependent subnets cannot be auto-assigned. net.ParseCIDR rejected the string; the value must be a proper network prefix like 100.64.0.0/10.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/populate_cluster_spec.go:368 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Correct nonMasqueradeCIDR to a valid CIDR notation (e.g. 100.64.0.0/10)","Re-run cluster spec population"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}