return err;
}
-int lxc_link_nsgroup(const char *name, pid_t pid)
+int lxc_rename_nsgroup(const char *name, pid_t pid)
+{
+ char oldname[MAXPATHLEN];
+ char newname[MAXPATHLEN];
+ char cgroup[MAXPATHLEN];
+
+ if (get_cgroup_mount(MTAB, cgroup)) {
+ INFO("cgroup is not mounted");
+ return -1;
+ }
+
+ snprintf(oldname, MAXPATHLEN, "%s/%d", cgroup, pid);
+ snprintf(newname, MAXPATHLEN, "%s/%s", cgroup, name);
+
+ return rename(oldname, newname);
+}
+
+int lxc_link_nsgroup(const char *name)
{
char lxc[MAXPATHLEN];
char nsgroup[MAXPATHLEN];
}
snprintf(lxc, MAXPATHLEN, LXCPATH "/%s/nsgroup", name);
- snprintf(nsgroup, MAXPATHLEN, "%s/%d", cgroup, pid);
+ snprintf(nsgroup, MAXPATHLEN, "%s/%s", cgroup, name);
unlink(lxc);
ret = symlink(nsgroup, lxc);
#define MAXPRIOLEN 24
int lxc_get_cgroup_mount(const char *mtab, char *mnt);
-int lxc_link_nsgroup(const char *name, pid_t pid);
+int lxc_rename_nsgroup(const char *name, pid_t pid);
+int lxc_link_nsgroup(const char *name);
int lxc_unlink_nsgroup(const char *name);
#endif
goto out_abort;
}
- if (lxc_link_nsgroup(name, handler->pid))
+ if (lxc_rename_nsgroup(name, handler->pid) || lxc_link_nsgroup(name))
WARN("cgroupfs not found: cgroup disabled");
/* Create the network configuration */
- if (clone_flags & CLONE_NEWNET && conf_create_network(name, handler->pid)) {
+ if (clone_flags & CLONE_NEWNET &&
+ conf_create_network(name, handler->pid)) {
ERROR("failed to create the configured network");
goto out_abort;
}