]>
Commit | Line | Data |
---|---|---|
937921aa WB |
1 | use std::ffi::CString; |
2 | ||
e420f6f9 | 3 | use failure::Error; |
937921aa WB |
4 | use nix::errno::Errno; |
5 | use nix::sys::stat; | |
e420f6f9 WB |
6 | |
7 | use crate::lxcseccomp::ProxyMessageBuffer; | |
c95be5f6 | 8 | use crate::syscall::SyscallStatus; |
937921aa | 9 | use crate::tools::Fd; |
e420f6f9 | 10 | |
c95be5f6 | 11 | pub 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 | ||
19 | pub 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 |
27 | async 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 | } |