summaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAgeFilesLines
* linux: rxring: fix tp_snaplen treated as the L3 length instead L2dilluti0n2026-07-104-17/+81
| | | | | | | | | While solving it, introduced Pkt abstraction so that advance() is automatically executed upon dropping it. This change still allows access to mmapped pointers within the Pkt.net() and enables the addition of other slice fields (such as mac) later.
* linux: rxring: guard div0 as EINVALdilluti0n2026-07-091-0/+3
|
* linux: rxring: fix u32 overflow on ring_size initdilluti0n2026-07-091-1/+1
|
* linux: rxring: fix possable memory ordering issuedilluti0n2026-07-091-15/+25
|
* linux: nit: move const inside to functiondilluti0n2026-07-091-2/+2
|
* linux: rules: abort if any rule is failed to installdilluti0n2026-07-081-5/+10
|
* linux: move firewall rule handling to mod ruledilluti0n2026-07-086-218/+211
|
* linux: fix iptables not cleanup on startupdilluti0n2026-07-082-31/+65
| | | | | | | | | cleanup_rules() relies on the global flag IS_NFT_NOT_SUPPORTED, which is always False before install_rule is called. Fixed it to always attempt cleanup for ipt/ip6/nft at startup. At the same time, implement Drop so that firewall cleanup occurs when dies due to ?.
* Use paexit on shutdowndilluti0n2026-07-081-1/+1
| | | | This makes windows users able to see the error message.
* Move platform-dependant codes to mod platformdilluti0n2026-07-085-46/+43
|
* opt: nit refinedilluti0n2026-07-082-16/+14
|
* linux: use syscall! macro on open_signalfd()dilluti0n2026-07-071-9/+5
| | | | | | It would be better if libc_s did not provide signalfd. The open_signalfd() function itself has issues, such as sigprocmask being applied elsewhere before opening it.
* Merge branch 'linux-cleanup'dilluti0n2026-07-075-173/+246
|\ | | | | | | | | Drop nix and add libc_s wrappers (with nix::fcntl like setsockopt abstraction).
| * linux: do not panic when failed to set IPV6_HDRINCLdilluti0n2026-07-071-1/+4
| | | | | | | | | | This is likely new feature in kernel. (mayby 5.6 or something near there)
| * linux: rxring: make tp_* series configurabledilluti0n2026-07-072-19/+23
| |
| * linux: implement socket and mmap wrapper for rxringdilluti0n2026-07-072-32/+39
| | | | | | | | | | | | | | Here mmap/munmap wrapper remain unsafe since mmap returns a pointer causes a memory leak when munmap is not called while dropping, and munmap has strict rule (PAGE_SIZE aligned) for addr defined on munmap(2).
| * linux: libc_s: add syscall! macro to reduce redundant error handlingdilluti0n2026-07-061-29/+15
| |
| * linux: add PACKET_RX_RING to libc_s::setsockopt apstractiondilluti0n2026-07-062-30/+27
| | | | | | | | | | | | | | | | | | The existing implementation was unsafe because UB could occur if a user-space pointer referenced by the struct sock_fprog was incorrectly passed. Rust safe model allows pointer creation and makes dereferencing unsafe. In this case, dereferencing happenes in kernel-space, Rust cannot guarantee this. So it must be handled separately.
| * linux: add safe abstraction for setsockopt(SO_ATTACH_FILTER)dilluti0n2026-07-062-12/+32
| | | | | | | | | | | | Treating optval as just a &[u8] in setsockopt() is not appropriate for usage patterns where a struct is put into optval. Rust treats casting a struct to &[u8] as unsafe.
| * linux: move poll_s() to mod libc_sdilluti0n2026-07-062-13/+11
| |
| * nit: remove unused crate::dilluti0n2026-07-061-2/+2
| |
| * nit: move use libc::sock_filter to inside open_rxring()dilluti0n2026-07-061-4/+2
| |
| * linux: drop nix, add wrapper libc_s insteaddilluti0n2026-07-064-76/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | When I updated nix to 0.31, `nix::fcntl::flock` became deprecated and unusable. At first I try to refactor `lock_pid_file()` to use the `lock` method of the `nix::fcntl::Flock` struct, but a situation arose where `set_len(0)` could not be called due to ownership issues. Linux system calls are fundamentally simple, stable, and backward compatible. Therefore, a compat layer is not necessary. Anticipating that this might happen again, this commit introduce the `libc_s`, which handles simple error processing for unsafe ffis in libc syscall bindings.
| * nit: update emaildilluti0n2026-07-061-1/+1
| |
* | pkt: fix infer_hops againdilluti0n2026-06-291-1/+1
| |
* | opt: fix help messagesdilluti0n2026-06-291-15/+14
|/
* linux: inline poll_once and lift fds init outside the loopdilluti0n2026-06-291-41/+31
| | | | | | Keeping poll_once() separate just caused more headaches. It was also rebuilding the fds array every single time. Since poll() only overwrites revents, doing that on every loop was totally unnecessary.
* linux: drop ctrlc crate and use signalfd insteaddilluti0n2026-06-293-92/+45
| | | | | | This integrates well with the main poll loop and removes the global AtomicBool RUNNING, which previously did nothing but detect interrupts before entering the loop.
* install.sh: prevent tarball fetch and log during uninstallationdilluti0n2026-05-021-22/+23
| | | | | In v1.1, the make dependency was removed so there was no need to fetch tarball, but it kept patching.
* docs: README: fix typodilluti0n2026-04-211-10/+10
|
* docs: dpibreak.1: improve bugs sectiondilluti0n2026-04-212-10/+21
|
* docs: dpibreak.1: fix typodilluti0n2026-04-212-2/+2
|
* docs: README: describe what install.sh doesdilluti0n2026-04-211-4/+5
|
* docs: README: updatedilluti0n2026-04-211-3/+10
|
* install.sh: remove -v on tar, fix/add logs and add SVERSION variabledilluti0n2026-04-181-8/+11
|
* scripts: add sign.shdilluti0n2026-04-181-0/+35
|
* pkg: aur: dpibreak: bump version to 0.6.1dilluti0n2026-04-161-0/+0
|
* ci: nit: fix indent issue on publish-wingetv0.6.1dilluti0n2026-04-161-1/+1
|
* Bump version to 0.6.1dilluti0n2026-04-164-43/+36
|
* docs: README: update winget installed version to use `dpibreak -h`dilluti0n2026-04-161-2/+2
| | | | Console is now not insta-terminated now due to pause() on opt.rs.
* ci: add publish-wingetdilluti0n2026-04-161-0/+26
|
* docs: CHANGELOG: update by 199b7783fdd4c81b322c33ba6bad5fd60a300e8adilluti0n2026-04-161-0/+3
|
* windows: wait for keypress before exit on --helpdilluti0n2026-04-161-1/+16
| | | | | | UAC elevation spawns a new console that closes when the process exits, cutting off --help output and error messages. Add a pause on Windows-only exit paths via _getch().
* docs: README.md: add winget instructiondilluti0n2026-04-163-16/+36
|
* docs: CHANGELOG: update by 722a3b008dd7c7aa32ec541bf6326e56751e7cb9dilluti0n2026-04-081-0/+3
|
* build: declare MSRV as 1.88dilluti0n2026-04-082-2/+3
| | | | | | | | The hot loop in src/platform/linux.rs uses if-let chains:(`if cond && let Some(x) = expr`), stabilised in Rust 1.88. Older toolchains fail with a cryptic E0658 feature-gate error; declaring rust-version surfaces a clear "package requires rustc 1.88 or newer" message at cargo invocation time instead.
* linux: drain rxring before nfqueue in poll loopdilluti0n2026-04-081-7/+7
| | | | | | | | When both fds are ready in the same wakeup, the SYN/ACK that triggered rx_ready is causally prior to the ClientHello waiting in the nfqueue. Process the rxring first so HopTab is populated before handle_packet runs find_hop, reducing the race window for HopLookupError::NotFound under load.
* docs: README: move Quickstart upperdilluti0n2026-04-051-38/+36
|
* docs: README: updatedilluti0n2026-04-051-44/+23
|
* opt: fix -D deprecation warning conditiondilluti0n2026-04-052-1/+6
| | | | | Previously checked `argv == "--loglevel"` by mistake, copied from the --loglevel deprecation pattern. Now correctly checks `argv == "-D"`.