return true;
}
-int cgroup_get(struct lxc_conf *conf,
- const char *name, const char *lxcpath,
- const char *filename, char *buf, size_t len)
-{
- __do_close int unified_fd = -EBADF;
- ssize_t ret;
-
- if (!conf || is_empty_string(filename) || is_empty_string(name) ||
- is_empty_string(lxcpath))
- return ret_errno(EINVAL);
-
- if ((buf && !len) || (len && !buf))
- return ret_errno(EINVAL);
-
- unified_fd = lxc_cmd_get_cgroup2_fd(name, lxcpath);
- if (unified_fd < 0)
- return ret_errno(ENOCGROUP2);
-
- ret = lxc_read_try_buf_at(unified_fd, filename, buf, len);
- if (ret < 0)
- SYSERROR("Failed to read cgroup value");
-
- return ret;
-}
-
/* Called externally (i.e. from 'lxc-cgroup') to query cgroup limits. Here we
* don't have a cgroup_data set up, so we ask the running container through the
* commands API for the cgroup path.
return device_cgroup_parse_access(device, ++val);
}
-int cgroup_set(struct lxc_conf *conf, const char *name, const char *lxcpath,
- const char *filename, const char *value)
-{
- __do_close int unified_fd = -EBADF;
- ssize_t ret;
-
- if (!conf || is_empty_string(filename) || is_empty_string(value) ||
- is_empty_string(name) || is_empty_string(lxcpath))
- return ret_errno(EINVAL);
-
- unified_fd = lxc_cmd_get_cgroup2_fd(name, lxcpath);
- if (unified_fd < 0)
- return ret_errno(ENOCGROUP2);
-
- if (strncmp(filename, "devices.", STRLITERALLEN("devices.")) == 0) {
- struct device_item device = {};
-
- ret = device_cgroup_rule_parse(&device, filename, value);
- if (ret < 0)
- return log_error_errno(-1, EINVAL, "Failed to parse device string %s=%s", filename, value);
-
- ret = lxc_cmd_add_bpf_device_cgroup(name, lxcpath, &device);
- } else {
- ret = lxc_writeat(unified_fd, filename, value, strlen(value));
- }
-
- return ret;
-}
-
/* Called externally (i.e. from 'lxc-cgroup') to set new cgroup limits. Here we
* don't have a cgroup_data set up, so we ask the running container through the
* commands API for the cgroup path.
return move_ptr(cgfsng_ops);
}
+
+int cgroup_get(struct lxc_conf *conf,
+ const char *name, const char *lxcpath,
+ const char *filename, char *buf, size_t len)
+{
+ __do_close int unified_fd = -EBADF;
+ ssize_t ret;
+
+ if (!conf || is_empty_string(filename) || is_empty_string(name) ||
+ is_empty_string(lxcpath))
+ return ret_errno(EINVAL);
+
+ if ((buf && !len) || (len && !buf))
+ return ret_errno(EINVAL);
+
+ unified_fd = lxc_cmd_get_cgroup2_fd(name, lxcpath);
+ if (unified_fd < 0)
+ return ret_errno(ENOCGROUP2);
+
+ ret = lxc_read_try_buf_at(unified_fd, filename, buf, len);
+ if (ret < 0)
+ SYSERROR("Failed to read cgroup value");
+
+ return ret;
+}
+
+int cgroup_set(struct lxc_conf *conf, const char *name, const char *lxcpath,
+ const char *filename, const char *value)
+{
+ __do_close int unified_fd = -EBADF;
+ ssize_t ret;
+
+ if (!conf || is_empty_string(filename) || is_empty_string(value) ||
+ is_empty_string(name) || is_empty_string(lxcpath))
+ return ret_errno(EINVAL);
+
+ unified_fd = lxc_cmd_get_cgroup2_fd(name, lxcpath);
+ if (unified_fd < 0)
+ return ret_errno(ENOCGROUP2);
+
+ if (strncmp(filename, "devices.", STRLITERALLEN("devices.")) == 0) {
+ struct device_item device = {};
+
+ ret = device_cgroup_rule_parse(&device, filename, value);
+ if (ret < 0)
+ return log_error_errno(-1, EINVAL, "Failed to parse device string %s=%s", filename, value);
+
+ ret = lxc_cmd_add_bpf_device_cgroup(name, lxcpath, &device);
+ } else {
+ ret = lxc_writeat(unified_fd, filename, value, strlen(value));
+ }
+
+ return ret;
+}