summaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAgeFilesLines
* 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"`.
* pkg: aur: dpibreak: bump version to 0.6.0dilluti0n2026-04-051-0/+0
|