+ } else if (streq(name, "CPUQuotaPerSecUSec")) {
+ uint64_t u64;
+
+ r = sd_bus_message_read(message, "t", &u64);
+ if (r < 0)
+ return r;
+
+ if (u64 <= 0)
+ return sd_bus_error_set_errnof(error, EINVAL, "CPUQuotaPerSecUSec value out of range");
+
+ if (mode != UNIT_CHECK) {
+ c->cpu_quota_per_sec_usec = u64;
+ c->cpu_quota_usec = (uint64_t) -1;
+ u->cgroup_realized_mask &= ~CGROUP_CPU;
+ unit_write_drop_in_private_format(u, mode, "CPUQuota", "CPUQuota=%0.f%%", (double) (c->cpu_quota_per_sec_usec / 10000));
+ }
+
+ return 1;
+
+ } else if (streq(name, "CPUQuotaUSec")) {
+ uint64_t u64;
+
+ r = sd_bus_message_read(message, "t", &u64);
+ if (r < 0)
+ return r;
+
+ if (u64 <= 0)
+ return sd_bus_error_set_errnof(error, EINVAL, "CPUQuotaUSec value out of range");
+
+ if (mode != UNIT_CHECK) {
+ c->cpu_quota_usec = u64;
+ c->cpu_quota_per_sec_usec = (uint64_t) -1;
+ u->cgroup_realized_mask &= ~CGROUP_CPU;
+ unit_write_drop_in_private_format(u, mode, "CPUQuota", "CPUQuota=%" PRIu64 "us", u64);
+ }
+
+ return 1;
+
+ } else if (streq(name, "CPUQuotaPeriodUSec")) {
+
+ uint64_t u64;
+
+ r = sd_bus_message_read(message, "t", &u64);
+ if (r < 0)
+ return r;
+
+ if (u64 <= 0 || u64 >= (usec_t) -1)
+ return sd_bus_error_set_errnof(error, EINVAL, "CPUQuotaPeriodUSec value out of range");
+
+ if (mode != UNIT_CHECK) {
+ c->cpu_quota_period_usec = u64;
+ u->cgroup_realized_mask &= ~CGROUP_CPU;
+ unit_write_drop_in_private_format(u, mode, name, "CPUQuotaPeriodSec=%" PRIu64 "us", c->cpu_quota_period_usec);
+ }
+
+ return 1;
+