]> git.proxmox.com Git - pve-lxc-syscalld.git/blame - src/sys_mknod.rs
working on argument passing
[pve-lxc-syscalld.git] / src / sys_mknod.rs
CommitLineData
937921aa
WB
1use std::ffi::CString;
2
e420f6f9 3use failure::Error;
937921aa
WB
4use nix::errno::Errno;
5use nix::sys::stat;
e420f6f9
WB
6
7use crate::lxcseccomp::ProxyMessageBuffer;
c95be5f6 8use crate::syscall::SyscallStatus;
937921aa 9use crate::tools::Fd;
e420f6f9 10
c95be5f6 11pub async fn mknod(msg: &ProxyMessageBuffer) -> Result<SyscallStatus, Error> {
937921aa
WB
12 let pathname = msg.arg_c_string(0)?;
13 let mode = msg.arg_mode_t(1)?;
14 let dev = msg.arg_dev_t(2)?;
15 let cwd = msg.pid_fd().fd_cwd()?;
16 do_mknodat(cwd, pathname, mode, dev).await
17}
18
19pub async fn mknodat(msg: &ProxyMessageBuffer) -> Result<SyscallStatus, Error> {
20 let dirfd = msg.arg_fd(0, libc::O_DIRECTORY)?;
21 let pathname = msg.arg_c_string(1)?;
22 let mode = msg.arg_mode_t(2)?;
23 let dev = msg.arg_dev_t(3)?;
24 do_mknodat(dirfd, pathname, mode, dev).await
e420f6f9
WB
25}
26
937921aa
WB
27async fn do_mknodat(
28 _dirfd: Fd,
29 _pathname: CString,
30 _mode: stat::Mode,
31 _dev: stat::dev_t,
32) -> Result<SyscallStatus, Error> {
33 println!("=> Responding with ENOENT");
34 Err(Errno::ENOENT.into())
e420f6f9 35}