return ret;
}
-int lxc_ttys_shift_ids(struct lxc_conf *c)
-{
- if (lxc_list_empty(&c->id_map))
- return 0;
-
- if (!strcmp(c->console.name, ""))
- return 0;
-
- if (chown_mapped_root(c->console.name, c) < 0) {
- ERROR("failed to chown console \"%s\"", c->console.name);
- return -1;
- }
-
- TRACE("chowned console \"%s\"", c->console.name);
-
- return 0;
-}
-
/* NOTE: Must not be called from inside the container namespace! */
int lxc_create_tmp_proc_mount(struct lxc_conf *conf)
{
extern int find_unmapped_nsid(struct lxc_conf *conf, enum idtype idtype);
extern int mapped_hostid(unsigned id, struct lxc_conf *conf, enum idtype idtype);
extern int chown_mapped_root(char *path, struct lxc_conf *conf);
-extern int lxc_ttys_shift_ids(struct lxc_conf *c);
extern int userns_exec_1(struct lxc_conf *conf, int (*fn)(void *), void *data,
const char *fn_name);
extern int userns_exec_full(struct lxc_conf *conf, int (*fn)(void *),
free(console->log_path);
free(console->path);
}
+
+int lxc_pty_map_ids(struct lxc_conf *c, struct lxc_console *pty)
+{
+ int ret;
+
+ if (lxc_list_empty(&c->id_map))
+ return 0;
+
+ ret = strcmp(pty->name, "");
+ if (ret == 0)
+ return 0;
+
+ ret = chown_mapped_root(pty->name, c);
+ if (ret < 0) {
+ ERROR("Failed to chown \"%s\"", pty->name);
+ return -1;
+ }
+
+ TRACE("Chowned \"%s\"", pty->name);
+
+ return 0;
+}
extern void lxc_pty_conf_free(struct lxc_console *console);
extern void lxc_pty_info_init(struct lxc_pty_info *pty);
extern void lxc_pty_init(struct lxc_console *pty);
+extern int lxc_pty_map_ids(struct lxc_conf *c, struct lxc_console *pty);
#endif
}
TRACE("Created console");
- if (lxc_ttys_shift_ids(conf) < 0) {
+ ret = lxc_pty_map_ids(conf, &conf->console);
+ if (ret < 0) {
ERROR("Failed to shift tty into container.");
goto out_restore_sigmask;
}
conf->console.descr = &descr;
/* Shift ttys to container. */
- if (lxc_ttys_shift_ids(conf) < 0) {
+ ret = lxc_pty_map_ids(conf, &conf->console);
+ if (ret < 0) {
fprintf(stderr, "Failed to shift tty into container\n");
goto err1;
}