@@ -578,6 +578,22 @@ int join_classid(void)
}
/**
+ * open_classid() - Open a cgroupv1 net_cls classid
+ *
+ * This function expects the cgroup work dir to be already created, as we
+ * open it here.
+ *
+ * On success, it returns the file descriptor. On failure it returns -1.
+ */
+int open_classid(void)
+{
+ char cgroup_workdir[PATH_MAX + 1];
+
+ format_classid_path(cgroup_workdir);
+ return open(cgroup_workdir, O_RDONLY);
+}
+
+/**
* cleanup_classid_environment() - Cleanup the cgroupv1 net_cls environment
*
* At call time, it moves the calling process to the root cgroup, and then
@@ -31,6 +31,7 @@ int write_cgroup_file_parent(const char *relative_path, const char *file,
/* cgroupv1 related */
int set_classid(unsigned int id);
int join_classid(void);
+int open_classid(void);
int setup_classid_environment(void);
void cleanup_classid_environment(void);
Add a new cgroup helper open_classid() to get the net_cls cgroup fd. Signed-off-by: Yafang Shao <laoar.shao@gmail.com> --- tools/testing/selftests/bpf/cgroup_helpers.c | 16 ++++++++++++++++ tools/testing/selftests/bpf/cgroup_helpers.h | 1 + 2 files changed, 17 insertions(+)