Kinda get network working

This commit is contained in:
Michael Mikovsky
2025-08-12 22:24:00 -06:00
parent 8b2a596b9a
commit 856d7e467f
15 changed files with 3316 additions and 3219 deletions
+540
View File
@@ -0,0 +1,540 @@
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::<i32, Sysno>(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,
// }
}