commands: unify fd retrieval commands

parent 89d51b22
...@@ -622,23 +622,27 @@ static int lxc_cmd_get_init_pid_callback(int fd, struct lxc_cmd_req *req, ...@@ -622,23 +622,27 @@ static int lxc_cmd_get_init_pid_callback(int fd, struct lxc_cmd_req *req,
int lxc_cmd_get_init_pidfd(const char *name, const char *lxcpath) int lxc_cmd_get_init_pidfd(const char *name, const char *lxcpath)
{ {
bool stopped = false; bool stopped = false;
int pidfd, ret; int fd;
ssize_t ret;
struct lxc_cmd_rr cmd; struct lxc_cmd_rr cmd;
lxc_cmd_init(&cmd, LXC_CMD_GET_INIT_PIDFD); lxc_cmd_init(&cmd, LXC_CMD_GET_INIT_PIDFD);
ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL);
if (ret < 0) if (ret < 0)
return sysdebug("Failed to process init pidfd command"); return sysdebug("Failed to process \"%s\"",
lxc_cmd_str(LXC_CMD_GET_INIT_PIDFD));
if (cmd.rsp.ret < 0) if (cmd.rsp.ret < 0)
return sysdebug_set(cmd.rsp.ret, "Failed to receive init pidfd"); return sysdebug_set(cmd.rsp.ret, "Failed to receive file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_INIT_PIDFD));
pidfd = PTR_TO_INT(cmd.rsp.data); fd = PTR_TO_INT(cmd.rsp.data);
if (pidfd < 0) if (fd < 0)
return sysdebug_set(pidfd, "Failed to receive init pidfd"); return sysdebug_set(fd, "Received invalid file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_INIT_PIDFD));
return pidfd; return fd;
} }
static int lxc_cmd_get_init_pidfd_callback(int fd, struct lxc_cmd_req *req, static int lxc_cmd_get_init_pidfd_callback(int fd, struct lxc_cmd_req *req,
...@@ -659,6 +663,7 @@ static int lxc_cmd_get_init_pidfd_callback(int fd, struct lxc_cmd_req *req, ...@@ -659,6 +663,7 @@ static int lxc_cmd_get_init_pidfd_callback(int fd, struct lxc_cmd_req *req,
int lxc_cmd_get_devpts_fd(const char *name, const char *lxcpath) int lxc_cmd_get_devpts_fd(const char *name, const char *lxcpath)
{ {
bool stopped = false; bool stopped = false;
int fd;
ssize_t ret; ssize_t ret;
struct lxc_cmd_rr cmd; struct lxc_cmd_rr cmd;
...@@ -666,12 +671,18 @@ int lxc_cmd_get_devpts_fd(const char *name, const char *lxcpath) ...@@ -666,12 +671,18 @@ int lxc_cmd_get_devpts_fd(const char *name, const char *lxcpath)
ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL);
if (ret < 0) if (ret < 0)
return log_debug_errno(-1, errno, "Failed to process devpts fd command"); return sysdebug("Failed to process \"%s\"",
lxc_cmd_str(LXC_CMD_GET_DEVPTS_FD));
if (cmd.rsp.ret < 0) if (cmd.rsp.ret < 0)
return log_debug_errno(-EBADF, errno, "Failed to receive devpts fd"); return sysdebug_set(cmd.rsp.ret, "Failed to receive file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_DEVPTS_FD));
return PTR_TO_INT(cmd.rsp.data); fd = PTR_TO_INT(cmd.rsp.data);
if (fd < 0)
return sysdebug_set(fd, "Received invalid file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_DEVPTS_FD));
return fd;
} }
static int lxc_cmd_get_devpts_fd_callback(int fd, struct lxc_cmd_req *req, static int lxc_cmd_get_devpts_fd_callback(int fd, struct lxc_cmd_req *req,
...@@ -682,7 +693,7 @@ static int lxc_cmd_get_devpts_fd_callback(int fd, struct lxc_cmd_req *req, ...@@ -682,7 +693,7 @@ static int lxc_cmd_get_devpts_fd_callback(int fd, struct lxc_cmd_req *req,
.ret = -EBADF, .ret = -EBADF,
}; };
if (!handler->conf || handler->conf->devpts_fd < 0) if (handler->conf->devpts_fd < 0)
return lxc_cmd_rsp_send_reap(fd, &rsp); return lxc_cmd_rsp_send_reap(fd, &rsp);
rsp.ret = 0; rsp.ret = 0;
...@@ -693,6 +704,7 @@ int lxc_cmd_get_seccomp_notify_fd(const char *name, const char *lxcpath) ...@@ -693,6 +704,7 @@ int lxc_cmd_get_seccomp_notify_fd(const char *name, const char *lxcpath)
{ {
#ifdef HAVE_SECCOMP_NOTIFY #ifdef HAVE_SECCOMP_NOTIFY
bool stopped = false; bool stopped = false;
int fd;
ssize_t ret; ssize_t ret;
struct lxc_cmd_rr cmd; struct lxc_cmd_rr cmd;
...@@ -700,14 +712,20 @@ int lxc_cmd_get_seccomp_notify_fd(const char *name, const char *lxcpath) ...@@ -700,14 +712,20 @@ int lxc_cmd_get_seccomp_notify_fd(const char *name, const char *lxcpath)
ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL);
if (ret < 0) if (ret < 0)
return log_debug_errno(-1, errno, "Failed to process seccomp notify fd command"); return sysdebug("Failed to process \"%s\"",
lxc_cmd_str(LXC_CMD_GET_SECCOMP_NOTIFY_FD));
if (cmd.rsp.ret < 0) if (cmd.rsp.ret < 0)
return log_debug_errno(-EBADF, errno, "Failed to receive seccomp notify fd"); return sysdebug_set(cmd.rsp.ret, "Failed to receive file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_SECCOMP_NOTIFY_FD));
return PTR_TO_INT(cmd.rsp.data);
fd = PTR_TO_INT(cmd.rsp.data);
if (fd < 0)
return sysdebug_set(fd, "Received invalid file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_SECCOMP_NOTIFY_FD));
return fd;
#else #else
return ret_errno(EOPNOTSUPP); return ret_errno(ENOSYS);
#endif #endif
} }
...@@ -720,7 +738,7 @@ static int lxc_cmd_get_seccomp_notify_fd_callback(int fd, struct lxc_cmd_req *re ...@@ -720,7 +738,7 @@ static int lxc_cmd_get_seccomp_notify_fd_callback(int fd, struct lxc_cmd_req *re
.ret = -EBADF, .ret = -EBADF,
}; };
if (!handler->conf || handler->conf->seccomp.notifier.notify_fd < 0) if (handler->conf->seccomp.notifier.notify_fd < 0)
return lxc_cmd_rsp_send_reap(fd, &rsp); return lxc_cmd_rsp_send_reap(fd, &rsp);
rsp.ret = 0; rsp.ret = 0;
...@@ -742,10 +760,12 @@ int lxc_cmd_get_cgroup_ctx(const char *name, const char *lxcpath, ...@@ -742,10 +760,12 @@ int lxc_cmd_get_cgroup_ctx(const char *name, const char *lxcpath,
ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL);
if (ret < 0) if (ret < 0)
return log_debug_errno(-1, errno, "Failed to process cgroup context command"); return sysdebug("Failed to process \"%s\"",
lxc_cmd_str(LXC_CMD_GET_CGROUP_CTX));
if (cmd.rsp.ret < 0) if (cmd.rsp.ret < 0)
return log_debug_errno(-EBADF, errno, "Failed to receive cgroup fds"); return sysdebug_set(cmd.rsp.ret, "Failed to receive file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_CGROUP_CTX));
return 0; return 0;
} }
...@@ -1140,7 +1160,7 @@ static int lxc_cmd_terminal_winch_callback(int fd, struct lxc_cmd_req *req, ...@@ -1140,7 +1160,7 @@ static int lxc_cmd_terminal_winch_callback(int fd, struct lxc_cmd_req *req,
struct lxc_epoll_descr *descr) struct lxc_epoll_descr *descr)
{ {
/* should never be called */ /* should never be called */
return log_error_errno(-1, ENOSYS, "Called lxc_cmd_terminal_winch_callback()"); return syserror_set(-ENOSYS, "Called lxc_cmd_terminal_winch_callback()");
} }
/* /*
...@@ -1166,7 +1186,8 @@ int lxc_cmd_get_tty_fd(const char *name, int *ttynum, int *fd, const char *lxcpa ...@@ -1166,7 +1186,8 @@ int lxc_cmd_get_tty_fd(const char *name, int *ttynum, int *fd, const char *lxcpa
ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL);
if (ret < 0) if (ret < 0)
return ret; return sysdebug("Failed to process \"%s\"",
lxc_cmd_str(LXC_CMD_GET_TTY_FD));
rspdata = cmd.rsp.data; rspdata = cmd.rsp.data;
if (cmd.rsp.ret < 0) if (cmd.rsp.ret < 0)
...@@ -1182,7 +1203,8 @@ int lxc_cmd_get_tty_fd(const char *name, int *ttynum, int *fd, const char *lxcpa ...@@ -1182,7 +1203,8 @@ int lxc_cmd_get_tty_fd(const char *name, int *ttynum, int *fd, const char *lxcpa
*fd = rspdata->ptxfd; *fd = rspdata->ptxfd;
*ttynum = rspdata->ttynum; *ttynum = rspdata->ttynum;
return log_info(ret, "Alloced fd %d for tty %d via socket %zd", *fd, rspdata->ttynum, ret); INFO("Alloced fd %d for tty %d via socket %zd", *fd, rspdata->ttynum, ret);
return ret;
} }
static int lxc_cmd_get_tty_fd_callback(int fd, struct lxc_cmd_req *req, static int lxc_cmd_get_tty_fd_callback(int fd, struct lxc_cmd_req *req,
...@@ -1207,7 +1229,8 @@ static int lxc_cmd_get_tty_fd_callback(int fd, struct lxc_cmd_req *req, ...@@ -1207,7 +1229,8 @@ static int lxc_cmd_get_tty_fd_callback(int fd, struct lxc_cmd_req *req,
return ret; return ret;
} }
return log_debug(ret, "Send tty to client"); DEBUG("Send tty to client");
return ret;
} }
/* /*
...@@ -1658,10 +1681,12 @@ int lxc_cmd_get_cgroup_fd(const char *name, const char *lxcpath, ...@@ -1658,10 +1681,12 @@ int lxc_cmd_get_cgroup_fd(const char *name, const char *lxcpath,
ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL);
if (ret < 0) if (ret < 0)
return log_debug_errno(-1, errno, "Failed to process cgroup fd command"); return sysdebug("Failed to process \"%s\"",
lxc_cmd_str(LXC_CMD_GET_CGROUP_FD));
if (cmd.rsp.ret < 0) if (cmd.rsp.ret < 0)
return log_debug_errno(-EBADF, errno, "Failed to receive cgroup fd"); return sysdebug_set(cmd.rsp.ret, "Failed to receive file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_CGROUP_FD));
return 0; return 0;
} }
...@@ -1678,10 +1703,12 @@ int lxc_cmd_get_limit_cgroup_fd(const char *name, const char *lxcpath, ...@@ -1678,10 +1703,12 @@ int lxc_cmd_get_limit_cgroup_fd(const char *name, const char *lxcpath,
ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL);
if (ret < 0) if (ret < 0)
return log_debug_errno(-1, errno, "Failed to process limit cgroup fd command"); return sysdebug("Failed to process \"%s\"",
lxc_cmd_str(LXC_CMD_GET_CGROUP_FD));
if (cmd.rsp.ret < 0) if (cmd.rsp.ret < 0)
return log_debug_errno(-EBADF, errno, "Failed to receive limit cgroup fd"); return sysdebug_set(cmd.rsp.ret, "Failed to receive file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_CGROUP_FD));
return 0; return 0;
} }
...@@ -1735,6 +1762,7 @@ static int lxc_cmd_get_limit_cgroup_fd_callback(int fd, struct lxc_cmd_req *req, ...@@ -1735,6 +1762,7 @@ static int lxc_cmd_get_limit_cgroup_fd_callback(int fd, struct lxc_cmd_req *req,
int lxc_cmd_get_cgroup2_fd(const char *name, const char *lxcpath) int lxc_cmd_get_cgroup2_fd(const char *name, const char *lxcpath)
{ {
bool stopped = false; bool stopped = false;
int fd;
ssize_t ret; ssize_t ret;
struct lxc_cmd_rr cmd; struct lxc_cmd_rr cmd;
...@@ -1742,17 +1770,24 @@ int lxc_cmd_get_cgroup2_fd(const char *name, const char *lxcpath) ...@@ -1742,17 +1770,24 @@ int lxc_cmd_get_cgroup2_fd(const char *name, const char *lxcpath)
ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL);
if (ret < 0) if (ret < 0)
return -1; return sysdebug("Failed to process \"%s\"",
lxc_cmd_str(LXC_CMD_GET_CGROUP2_FD));
if (cmd.rsp.ret < 0) if (cmd.rsp.ret < 0)
return log_debug_errno(cmd.rsp.ret, -cmd.rsp.ret, "Failed to receive cgroup2 fd"); return sysdebug_set(cmd.rsp.ret, "Failed to receive file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_CGROUP2_FD));
return PTR_TO_INT(cmd.rsp.data); fd = PTR_TO_INT(cmd.rsp.data);
if (fd < 0)
return sysdebug_set(fd, "Received invalid file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_CGROUP2_FD));
return fd;
} }
int lxc_cmd_get_limit_cgroup2_fd(const char *name, const char *lxcpath) int lxc_cmd_get_limit_cgroup2_fd(const char *name, const char *lxcpath)
{ {
bool stopped = false; bool stopped = false;
int fd;
ssize_t ret; ssize_t ret;
struct lxc_cmd_rr cmd; struct lxc_cmd_rr cmd;
...@@ -1760,12 +1795,18 @@ int lxc_cmd_get_limit_cgroup2_fd(const char *name, const char *lxcpath) ...@@ -1760,12 +1795,18 @@ int lxc_cmd_get_limit_cgroup2_fd(const char *name, const char *lxcpath)
ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL);
if (ret < 0) if (ret < 0)
return -1; return sysdebug("Failed to process \"%s\"",
lxc_cmd_str(LXC_CMD_GET_CGROUP2_FD));
if (cmd.rsp.ret < 0) if (cmd.rsp.ret < 0)
return syswarn_set(cmd.rsp.ret, "Failed to receive cgroup2 limit fd"); return sysdebug_set(cmd.rsp.ret, "Failed to receive file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_CGROUP2_FD));
return PTR_TO_INT(cmd.rsp.data);
fd = PTR_TO_INT(cmd.rsp.data);
if (fd < 0)
return sysdebug_set(fd, "Received invalid file descriptor for \"%s\"",
lxc_cmd_str(LXC_CMD_GET_CGROUP2_FD));
return fd;
} }
static int __lxc_cmd_get_cgroup2_fd_callback(int fd, struct lxc_cmd_req *req, static int __lxc_cmd_get_cgroup2_fd_callback(int fd, struct lxc_cmd_req *req,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment