@@ -9,13 +9,14 @@ import (
9
9
"k8s.io/kubernetes/pkg/util/validation/field"
10
10
11
11
sdnapi "github.com/openshift/origin/pkg/sdn/api"
12
+ "github.com/openshift/origin/pkg/util/netutils"
12
13
)
13
14
14
15
// ValidateClusterNetwork tests if required fields in the ClusterNetwork are set.
15
16
func ValidateClusterNetwork (clusterNet * sdnapi.ClusterNetwork ) field.ErrorList {
16
17
allErrs := validation .ValidateObjectMeta (& clusterNet .ObjectMeta , false , path .ValidatePathSegmentName , field .NewPath ("metadata" ))
17
18
18
- clusterIP , clusterIPNet , err := net . ParseCIDR (clusterNet .Network )
19
+ clusterIPNet , err := netutils . ParseCIDRMask (clusterNet .Network )
19
20
if err != nil {
20
21
allErrs = append (allErrs , field .Invalid (field .NewPath ("network" ), clusterNet .Network , err .Error ()))
21
22
} else {
@@ -25,36 +26,36 @@ func ValidateClusterNetwork(clusterNet *sdnapi.ClusterNetwork) field.ErrorList {
25
26
}
26
27
}
27
28
28
- serviceIP , serviceIPNet , err := net . ParseCIDR (clusterNet .ServiceNetwork )
29
+ serviceIPNet , err := netutils . ParseCIDRMask (clusterNet .ServiceNetwork )
29
30
if err != nil {
30
31
allErrs = append (allErrs , field .Invalid (field .NewPath ("serviceNetwork" ), clusterNet .ServiceNetwork , err .Error ()))
31
32
}
32
33
33
- if (clusterIPNet != nil ) && (serviceIP != nil ) && clusterIPNet .Contains (serviceIP ) {
34
+ if (clusterIPNet != nil ) && (serviceIPNet != nil ) && clusterIPNet .Contains (serviceIPNet . IP ) {
34
35
allErrs = append (allErrs , field .Invalid (field .NewPath ("serviceNetwork" ), clusterNet .ServiceNetwork , "service network overlaps with cluster network" ))
35
36
}
36
- if (serviceIPNet != nil ) && (clusterIP != nil ) && serviceIPNet .Contains (clusterIP ) {
37
+ if (serviceIPNet != nil ) && (clusterIPNet != nil ) && serviceIPNet .Contains (clusterIPNet . IP ) {
37
38
allErrs = append (allErrs , field .Invalid (field .NewPath ("network" ), clusterNet .Network , "cluster network overlaps with service network" ))
38
39
}
39
40
40
41
return allErrs
41
42
}
42
43
43
44
func validateNewNetwork (obj * sdnapi.ClusterNetwork , old * sdnapi.ClusterNetwork ) * field.Error {
44
- oldBase , oldNet , err := net . ParseCIDR (old .Network )
45
+ oldNet , err := netutils . ParseCIDRMask (old .Network )
45
46
if err != nil {
46
47
// Shouldn't happen, but if the existing value is invalid, then any change should be an improvement...
47
48
return nil
48
49
}
49
50
oldSize , _ := oldNet .Mask .Size ()
50
- _ , newNet , err := net . ParseCIDR (obj .Network )
51
+ newNet , err := netutils . ParseCIDRMask (obj .Network )
51
52
if err != nil {
52
53
return field .Invalid (field .NewPath ("network" ), obj .Network , err .Error ())
53
54
}
54
55
newSize , _ := newNet .Mask .Size ()
55
56
// oldSize/newSize is, eg the "16" in "10.1.0.0/16", so "newSize < oldSize" means
56
57
// the new network is larger
57
- if newSize < oldSize && newNet .Contains (oldBase ) {
58
+ if newSize < oldSize && newNet .Contains (oldNet . IP ) {
58
59
return nil
59
60
} else {
60
61
return field .Invalid (field .NewPath ("network" ), obj .Network , "cannot change the cluster's network CIDR to a value that does not include the existing network." )
@@ -96,7 +97,7 @@ func ValidateHostSubnet(hs *sdnapi.HostSubnet) field.ErrorList {
96
97
allErrs = append (allErrs , field .Invalid (field .NewPath ("subnet" ), hs .Subnet , "field cannot be empty" ))
97
98
}
98
99
} else {
99
- _ , _ , err := net . ParseCIDR (hs .Subnet )
100
+ _ , err := netutils . ParseCIDRMask (hs .Subnet )
100
101
if err != nil {
101
102
allErrs = append (allErrs , field .Invalid (field .NewPath ("subnet" ), hs .Subnet , err .Error ()))
102
103
}
@@ -147,7 +148,7 @@ func ValidateEgressNetworkPolicy(policy *sdnapi.EgressNetworkPolicy) field.Error
147
148
allErrs = append (allErrs , field .Invalid (field .NewPath ("spec" ).Child ("egress" ).Index (i ).Child ("type" ), rule .Type , "invalid policy type" ))
148
149
}
149
150
150
- _ , _ , err := net . ParseCIDR (rule .To .CIDRSelector )
151
+ _ , err := netutils . ParseCIDRMask (rule .To .CIDRSelector )
151
152
if err != nil {
152
153
allErrs = append (allErrs , field .Invalid (field .NewPath ("spec" ).Child ("egress" ).Index (i ).Child ("to" ), rule .To .CIDRSelector , err .Error ()))
153
154
}
0 commit comments