diff --git a/pkg/compute/models/networks.go b/pkg/compute/models/networks.go index 588b2a134e..2af40c27ed 100644 --- a/pkg/compute/models/networks.go +++ b/pkg/compute/models/networks.go @@ -1376,6 +1376,9 @@ func (manager *SNetworkManager) ValidateCreateData(ctx context.Context, userCred masklen = prefix.MaskLen netAddr = prefix.Address.NetAddr(masklen) input.GuestIpMask = int64(prefix.MaskLen) + if masklen >= 30 { + return input, httperrors.NewInputParameterError("subnet masklen should be smaller than 30") + } // 根据掩码得到合法的GuestIpPrefix input.GuestIpPrefix = prefix.String() } else { @@ -1472,9 +1475,6 @@ func (manager *SNetworkManager) ValidateCreateData(ctx context.Context, userCred // reserve addresses for onecloud vpc networks masklen := int8(input.GuestIpMask) netAddr := ipStart.NetAddr(masklen) - if masklen >= 30 { - return input, httperrors.NewInputParameterError("subnet masklen should be smaller than 30") - } if netAddr != ipEnd.NetAddr(masklen) { return input, httperrors.NewInputParameterError("start and end ip when masked are not in the same cidr subnet") }