use crate::{Syscall, syscall_num::Sysno}; pub fn syscall_should_proxy(syscall: &Syscall) -> bool { match syscall { // --- Filesystem & I/O Syscalls --- // These interact with the filesystem and need to be forwarded to the remote host. Syscall::Read(..) | Syscall::Write(..) | Syscall::Open(..) | Syscall::Close(..) | Syscall::Stat(..) | Syscall::Fstat(..) | Syscall::Lstat(..) | Syscall::Openat(..) | Syscall::Creat(..) | Syscall::Rename(..) | Syscall::Renameat(..) | Syscall::Unlink(..) | Syscall::Unlinkat(..) | Syscall::Mkdir(..) | Syscall::Mkdirat(..) | Syscall::Rmdir(..) | Syscall::Chdir(..) | Syscall::Fchdir(..) | Syscall::Chmod(..) | Syscall::Fchmod(..) | Syscall::Fchmodat(..) | Syscall::Chown(..) | Syscall::Fchown(..) | Syscall::Lchown(..) | Syscall::Fchownat(..) | Syscall::Access(..) | Syscall::Faccessat(..) | Syscall::Getdents(..) | Syscall::Getdents64(..) | Syscall::Readlink(..) | Syscall::Readlinkat(..) | Syscall::Symlink(..) | Syscall::Symlinkat(..) | Syscall::Truncate(..) | Syscall::Ftruncate(..) | Syscall::Getcwd(..) | Syscall::Lseek(..) | Syscall::Sendfile(..) | Syscall::Sync | Syscall::Fsync(..) | Syscall::Fdatasync(..) | Syscall::Fcntl(..) | Syscall::Flock(..) | Syscall::Pipe(..) | Syscall::Pipe2(..) | Syscall::Dup(..) | Syscall::Dup2(..) | Syscall::Dup3(..) | Syscall::InotifyInit | Syscall::InotifyInit1(..) | Syscall::InotifyAddWatch(..) | Syscall::InotifyRmWatch(..) | Syscall::EpollCreate(..) | Syscall::EpollCreate1(..) | Syscall::EpollCtl(..) | Syscall::EpollWait(..) | Syscall::EpollPwait(..) | Syscall::EpollPwait2(..) | Syscall::Splice(..) | Syscall::Tee(..) | Syscall::Vmsplice(..) | Syscall::Fallocate(..) | Syscall::CopyFileRange(..) | Syscall::Utimes(..) | Syscall::Futimesat(..) | Syscall::Getxattr(..) | Syscall::Lgetxattr(..) | Syscall::Fgetxattr(..) | Syscall::Listxattr(..) | Syscall::Llistxattr(..) | Syscall::Flistxattr(..) | Syscall::Setxattr(..) | Syscall::Lsetxattr(..) | Syscall::Fsetxattr(..) | Syscall::Removexattr(..) | Syscall::Lremovexattr(..) | Syscall::Fremovexattr(..) | Syscall::Readv(..) | Syscall::Writev(..) | Syscall::Pread64(..) | Syscall::Pwrite64(..) | Syscall::Preadv(..) | Syscall::Pwritev(..) | Syscall::Preadv2(..) | Syscall::Pwritev2(..) | Syscall::Syncfs(..) | Syscall::Readahead(..) | Syscall::Statx(..) => true, // --- Network Syscalls --- // These are inherently remote operations. Syscall::Socket(..) | Syscall::Connect(..) | Syscall::Accept(..) | Syscall::Accept4(..) | Syscall::Sendto(..) | Syscall::Recvfrom(..) | Syscall::Sendmsg(..) | Syscall::Recvmsg(..) | Syscall::Sendmmsg(..) | Syscall::Recvmmsg(..) | Syscall::Shutdown(..) | Syscall::Bind(..) | Syscall::Listen(..) | Syscall::Getsockname(..) | Syscall::Getpeername(..) | Syscall::Socketpair(..) | Syscall::Setsockopt(..) | Syscall::Getsockopt(..) => true, // --- Process & IPC Syscalls --- // Syscalls that create new processes or threads (fork, clone, execve) // or manipulate inter-process state should be forwarded. Syscall::Clone(..) | Syscall::Clone3(..) | Syscall::Fork | Syscall::Vfork | Syscall::Execve(..) | Syscall::Execveat(..) | Syscall::ExitGroup(..) | Syscall::Wait4(..) | Syscall::Waitid(..) | Syscall::Kill(..) | Syscall::Tgkill(..) | Syscall::Tkill(..) | Syscall::Semget(..) | Syscall::Semop(..) | Syscall::Semctl(..) | Syscall::Semtimedop(..) | Syscall::Shmget(..) | Syscall::Shmat(..) | Syscall::Shmctl(..) | Syscall::Shmdt(..) | Syscall::Msgget(..) | Syscall::Msgsnd(..) | Syscall::Msgrcv(..) | Syscall::Msgctl(..) => true, // --- Other Syscalls that should be forwarded --- // A few other miscellaneous syscalls that are typically forwarded. Syscall::Reboot(..) | Syscall::Adjtimex(..) | Syscall::Gettimeofday(..) | Syscall::Settimeofday(..) | Syscall::ClockGettime(..) | Syscall::ClockSettime(..) | Syscall::ClockAdjtime(..) | Syscall::TimerCreate(..) | Syscall::TimerSettime(..) | Syscall::TimerfdCreate(..) | Syscall::TimerfdSettime(..) => true, // --- All other syscalls should NOT be forwarded --- // This includes memory management, local process state queries, // and other local operations. _ => false, } // match unsafe { std::mem::transmute::(n as i32) } { // Sysno::read => false, // Sysno::write => false, // Sysno::open => false, // Sysno::close => false, // Sysno::stat => false, // Sysno::fstat => false, // Sysno::lstat => false, // Sysno::poll => false, // Sysno::lseek => false, // Sysno::mmap => false, // Sysno::mprotect => false, // Sysno::munmap => false, // Sysno::brk => false, // Sysno::rt_sigaction => false, // Sysno::rt_sigprocmask => false, // Sysno::rt_sigreturn => false, // Sysno::ioctl => false, // Sysno::pread64 => false, // Sysno::pwrite64 => false, // Sysno::readv => false, // Sysno::writev => false, // Sysno::access => false, // Sysno::pipe => false, // Sysno::select => false, // Sysno::sched_yield => false, // Sysno::mremap => false, // Sysno::msync => false, // Sysno::mincore => false, // Sysno::madvise => false, // Sysno::shmget => false, // Sysno::shmat => false, // Sysno::shmctl => false, // Sysno::dup => false, // Sysno::dup2 => false, // Sysno::pause => false, // Sysno::nanosleep => false, // Sysno::getitimer => false, // Sysno::alarm => false, // Sysno::setitimer => false, // Sysno::getpid => false, // Sysno::sendfile => false, // Sysno::socket => false, // Sysno::connect => false, // Sysno::accept => false, // Sysno::sendto => false, // Sysno::recvfrom => false, // Sysno::sendmsg => false, // Sysno::recvmsg => false, // Sysno::shutdown => false, // Sysno::bind => false, // Sysno::listen => false, // Sysno::getsockname => false, // Sysno::getpeername => false, // Sysno::socketpair => false, // Sysno::setsockopt => false, // Sysno::getsockopt => false, // Sysno::clone => false, // Sysno::fork => false, // Sysno::vfork => false, // Sysno::execve => false, // Sysno::exit => false, // Sysno::wait4 => false, // Sysno::kill => false, // Sysno::uname => false, // Sysno::semget => false, // Sysno::semop => false, // Sysno::semctl => false, // Sysno::shmdt => false, // Sysno::msgget => false, // Sysno::msgsnd => false, // Sysno::msgrcv => false, // Sysno::msgctl => false, // Sysno::fcntl => false, // Sysno::flock => false, // Sysno::fsync => false, // Sysno::fdatasync => false, // Sysno::truncate => false, // Sysno::ftruncate => false, // Sysno::getdents => false, // Sysno::getcwd => false, // Sysno::chdir => false, // Sysno::fchdir => false, // Sysno::rename => false, // Sysno::mkdir => false, // Sysno::rmdir => false, // Sysno::creat => false, // Sysno::link => false, // Sysno::unlink => false, // Sysno::symlink => false, // Sysno::readlink => false, // Sysno::chmod => false, // Sysno::fchmod => false, // Sysno::chown => false, // Sysno::fchown => false, // Sysno::lchown => false, // Sysno::umask => false, // Sysno::gettimeofday => false, // Sysno::getrlimit => false, // Sysno::getrusage => false, // Sysno::sysinfo => false, // Sysno::times => false, // Sysno::ptrace => false, // Sysno::getuid => false, // Sysno::syslog => false, // Sysno::getgid => false, // Sysno::setuid => false, // Sysno::setgid => false, // Sysno::geteuid => false, // Sysno::getegid => false, // Sysno::setpgid => false, // Sysno::getppid => false, // Sysno::getpgrp => false, // Sysno::setsid => false, // Sysno::setreuid => false, // Sysno::setregid => false, // Sysno::getgroups => false, // Sysno::setgroups => false, // Sysno::setresuid => false, // Sysno::getresuid => false, // Sysno::setresgid => false, // Sysno::getresgid => false, // Sysno::getpgid => false, // Sysno::setfsuid => false, // Sysno::setfsgid => false, // Sysno::getsid => false, // Sysno::capget => false, // Sysno::capset => false, // Sysno::rt_sigpending => false, // Sysno::rt_sigtimedwait => false, // Sysno::rt_sigqueueinfo => false, // Sysno::rt_sigsuspend => false, // Sysno::sigaltstack => false, // Sysno::utime => false, // Sysno::mknod => false, // Sysno::uselib => false, // Sysno::personality => false, // Sysno::ustat => false, // Sysno::statfs => false, // Sysno::fstatfs => false, // Sysno::sysfs => false, // Sysno::getpriority => false, // Sysno::setpriority => false, // Sysno::sched_setparam => false, // Sysno::sched_getparam => false, // Sysno::sched_setscheduler => false, // Sysno::sched_getscheduler => false, // Sysno::sched_get_priority_max => false, // Sysno::sched_get_priority_min => false, // Sysno::sched_rr_get_interval => false, // Sysno::mlock => false, // Sysno::munlock => false, // Sysno::mlockall => false, // Sysno::munlockall => false, // Sysno::vhangup => false, // Sysno::modify_ldt => false, // Sysno::pivot_root => false, // Sysno::_sysctl => false, // Sysno::prctl => false, // Sysno::arch_prctl => false, // Sysno::adjtimex => false, // Sysno::setrlimit => false, // Sysno::chroot => false, // Sysno::sync => false, // Sysno::acct => false, // Sysno::settimeofday => false, // Sysno::mount => false, // Sysno::umount2 => false, // Sysno::swapon => false, // Sysno::swapoff => false, // Sysno::reboot => false, // Sysno::sethostname => false, // Sysno::setdomainname => false, // Sysno::iopl => false, // Sysno::ioperm => false, // Sysno::create_module => false, // Sysno::init_module => false, // Sysno::delete_module => false, // Sysno::get_kernel_syms => false, // Sysno::query_module => false, // Sysno::quotactl => false, // Sysno::nfsservctl => false, // Sysno::getpmsg => false, // Sysno::putpmsg => false, // Sysno::afs_syscall => false, // Sysno::tuxcall => false, // Sysno::security => false, // Sysno::gettid => false, // Sysno::readahead => false, // Sysno::setxattr => false, // Sysno::lsetxattr => false, // Sysno::fsetxattr => false, // Sysno::getxattr => false, // Sysno::lgetxattr => false, // Sysno::fgetxattr => false, // Sysno::listxattr => false, // Sysno::llistxattr => false, // Sysno::flistxattr => false, // Sysno::removexattr => false, // Sysno::lremovexattr => false, // Sysno::fremovexattr => false, // Sysno::tkill => false, // Sysno::time => false, // Sysno::futex => false, // Sysno::sched_setaffinity => false, // Sysno::sched_getaffinity => false, // Sysno::set_thread_area => false, // Sysno::io_setup => false, // Sysno::io_destroy => false, // Sysno::io_getevents => false, // Sysno::io_submit => false, // Sysno::io_cancel => false, // Sysno::get_thread_area => false, // Sysno::lookup_dcookie => false, // Sysno::epoll_create => false, // Sysno::epoll_ctl_old => false, // Sysno::epoll_wait_old => false, // Sysno::remap_file_pages => false, // Sysno::getdents64 => false, // Sysno::set_tid_address => false, // Sysno::restart_syscall => false, // Sysno::semtimedop => false, // Sysno::fadvise64 => false, // Sysno::timer_create => false, // Sysno::timer_settime => false, // Sysno::timer_gettime => false, // Sysno::timer_getoverrun => false, // Sysno::timer_delete => false, // Sysno::clock_settime => false, // Sysno::clock_gettime => false, // Sysno::clock_getres => false, // Sysno::clock_nanosleep => false, // Sysno::exit_group => true, // Sysno::epoll_wait => false, // Sysno::epoll_ctl => false, // Sysno::tgkill => false, // Sysno::utimes => false, // Sysno::vserver => false, // Sysno::mbind => false, // Sysno::set_mempolicy => false, // Sysno::get_mempolicy => false, // Sysno::mq_open => false, // Sysno::mq_unlink => false, // Sysno::mq_timedsend => false, // Sysno::mq_timedreceive => false, // Sysno::mq_notify => false, // Sysno::mq_getsetattr => false, // Sysno::kexec_load => false, // Sysno::waitid => false, // Sysno::add_key => false, // Sysno::request_key => false, // Sysno::keyctl => false, // Sysno::ioprio_set => false, // Sysno::ioprio_get => false, // Sysno::inotify_init => false, // Sysno::inotify_add_watch => false, // Sysno::inotify_rm_watch => false, // Sysno::migrate_pages => false, // Sysno::openat => false, // Sysno::mkdirat => false, // Sysno::mknodat => false, // Sysno::fchownat => false, // Sysno::futimesat => false, // Sysno::newfstatat => false, // Sysno::unlinkat => false, // Sysno::renameat => false, // Sysno::linkat => false, // Sysno::symlinkat => false, // Sysno::readlinkat => false, // Sysno::fchmodat => false, // Sysno::faccessat => false, // Sysno::pselect6 => false, // Sysno::ppoll => false, // Sysno::unshare => false, // Sysno::set_robust_list => false, // Sysno::get_robust_list => false, // Sysno::splice => false, // Sysno::tee => false, // Sysno::sync_file_range => false, // Sysno::vmsplice => false, // Sysno::move_pages => false, // Sysno::utimensat => false, // Sysno::epoll_pwait => false, // Sysno::signalfd => false, // Sysno::timerfd_create => false, // Sysno::eventfd => false, // Sysno::fallocate => false, // Sysno::timerfd_settime => false, // Sysno::timerfd_gettime => false, // Sysno::accept4 => false, // Sysno::signalfd4 => false, // Sysno::eventfd2 => false, // Sysno::epoll_create1 => false, // Sysno::dup3 => false, // Sysno::pipe2 => false, // Sysno::inotify_init1 => false, // Sysno::preadv => false, // Sysno::pwritev => false, // Sysno::rt_tgsigqueueinfo => false, // Sysno::perf_event_open => false, // Sysno::recvmmsg => false, // Sysno::fanotify_init => false, // Sysno::fanotify_mark => false, // Sysno::prlimit64 => false, // Sysno::name_to_handle_at => false, // Sysno::open_by_handle_at => false, // Sysno::clock_adjtime => false, // Sysno::syncfs => false, // Sysno::sendmmsg => false, // Sysno::setns => false, // Sysno::getcpu => false, // Sysno::process_vm_readv => false, // Sysno::process_vm_writev => false, // Sysno::kcmp => false, // Sysno::finit_module => false, // Sysno::sched_setattr => false, // Sysno::sched_getattr => false, // Sysno::renameat2 => false, // Sysno::seccomp => false, // Sysno::getrandom => false, // Sysno::memfd_create => false, // Sysno::kexec_file_load => false, // Sysno::bpf => false, // Sysno::execveat => false, // Sysno::userfaultfd => false, // Sysno::membarrier => false, // Sysno::mlock2 => false, // Sysno::copy_file_range => false, // Sysno::preadv2 => false, // Sysno::pwritev2 => false, // Sysno::pkey_mprotect => false, // Sysno::pkey_alloc => false, // Sysno::pkey_free => false, // Sysno::statx => false, // Sysno::io_pgetevents => false, // Sysno::rseq => false, // Sysno::pidfd_send_signal => false, // Sysno::io_uring_setup => false, // Sysno::io_uring_enter => false, // Sysno::io_uring_register => false, // Sysno::open_tree => false, // Sysno::move_mount => false, // Sysno::fsopen => false, // Sysno::fsconfig => false, // Sysno::fsmount => false, // Sysno::fspick => false, // Sysno::pidfd_open => false, // Sysno::clone3 => false, // Sysno::close_range => false, // Sysno::openat2 => false, // Sysno::pidfd_getfd => false, // Sysno::faccessat2 => false, // Sysno::process_madvise => false, // Sysno::epoll_pwait2 => false, // Sysno::mount_setattr => false, // Sysno::quotactl_fd => false, // Sysno::landlock_create_ruleset => false, // Sysno::landlock_add_rule => false, // Sysno::landlock_restrict_self => false, // Sysno::memfd_secret => false, // Sysno::process_mrelease => false, // Sysno::futex_waitv => false, // Sysno::set_mempolicy_home_node => false, // Sysno::cachestat => false, // Sysno::fchmodat2 => false, // Sysno::map_shadow_stack => false, // Sysno::futex_wake => false, // Sysno::futex_wait => false, // Sysno::futex_requeue => false, // Sysno::statmount => false, // Sysno::listmount => false, // Sysno::lsm_get_self_attr => false, // Sysno::lsm_set_self_attr => false, // Sysno::lsm_list_modules => false, // } }