return err;
}
-int lxc_rename_nsgroup(const char *name, pid_t pid)
+int lxc_rename_nsgroup(const char *name, struct lxc_handler *handler)
{
char oldname[MAXPATHLEN];
- char newname[MAXPATHLEN];
+ char *newname = handler->nsgroup;
char cgroup[MAXPATHLEN];
int ret;
return -1;
}
- snprintf(oldname, MAXPATHLEN, "%s/%d", cgroup, pid);
+ snprintf(oldname, MAXPATHLEN, "%s/%d", cgroup, handler->pid);
snprintf(newname, MAXPATHLEN, "%s/%s", cgroup, name);
/* there is a previous cgroup, assume it is empty, otherwise
else
DEBUG("'%s' renamed to '%s'", oldname, newname);
+
return ret;
}
-int lxc_link_nsgroup(const char *name)
+int lxc_link_nsgroup(const char *name, const char *nsgroup)
{
char lxc[MAXPATHLEN];
- char nsgroup[MAXPATHLEN];
- char cgroup[MAXPATHLEN];
int ret;
- if (get_cgroup_mount(MTAB, cgroup)) {
- ERROR("cgroup is not mounted");
- return -1;
- }
-
snprintf(lxc, MAXPATHLEN, LXCPATH "/%s/nsgroup", name);
- snprintf(nsgroup, MAXPATHLEN, "%s/%s", cgroup, name);
unlink(lxc);
ret = symlink(nsgroup, lxc);
#define MAXPRIOLEN 24
+struct lxc_handler;
int lxc_get_cgroup_mount(const char *mtab, char *mnt);
-int lxc_rename_nsgroup(const char *name, pid_t pid);
-int lxc_link_nsgroup(const char *name);
+int lxc_rename_nsgroup(const char *name, struct lxc_handler *handler);
+int lxc_link_nsgroup(const char *name, const char *nsgroup);
int lxc_unlink_nsgroup(const char *name);
#endif
goto out_abort;
}
- if (lxc_rename_nsgroup(name, handler->pid) || lxc_link_nsgroup(name))
+ if (lxc_rename_nsgroup(name, handler) ||
+ lxc_link_nsgroup(name, handler->nsgroup))
goto out_abort;
/* Create the network configuration */