<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dpibreak.git/src/platform/linux.rs, branch v0.4.1</title>
<subtitle>System-wide DPI circumvention with minimal configuration
</subtitle>
<id>http://git.dilluti0n.com/dpibreak.git/atom?h=v0.4.1</id>
<link rel='self' href='http://git.dilluti0n.com/dpibreak.git/atom?h=v0.4.1'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/'/>
<updated>2026-02-15T13:36:06Z</updated>
<entry>
<title>linux: add PID file locking for single instance enforcement</title>
<updated>2026-02-15T13:36:06Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-02-15T13:36:06Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=b26c2c8de5260b0e2a0b52cd838cb8a4bc1a63c1'/>
<id>urn:sha1:b26c2c8de5260b0e2a0b52cd838cb8a4bc1a63c1</id>
<content type='text'>
Prevent multiple non-daemon dpibreak instances using flock(). Show
existing PID on conflict and maintain lock until process termination.
</content>
</entry>
<entry>
<title>linux: extract PID_FILE constant for reuse</title>
<updated>2026-02-15T13:13:35Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-02-15T13:05:13Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=f31938fd8eea3d05f9e62daee236cf7c56ade227'/>
<id>urn:sha1:f31938fd8eea3d05f9e62daee236cf7c56ade227</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Consolidate setup logic into run()</title>
<updated>2026-02-15T13:04:25Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-02-15T13:01:43Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=3cb2c192454964c2ae01e196eaa7fdd6434efeb5'/>
<id>urn:sha1:3cb2c192454964c2ae01e196eaa7fdd6434efeb5</id>
<content type='text'>
The bootstrap/run separation was unnecessary. Move all initialization
(cleanup + nftables setup): into run() and skip bootstrap in daemon
mode. We repurpose the bootstrap() function to only run in non-daemon
mode for future foreground-only initialization.

- Add OPT_DAEMON option to detect daemon mode
- Move cleanup() and install_rules() from bootstrap() to run()
- Make bootstrap() a no-op (only called in non-daemon mode)
</content>
</entry>
<entry>
<title>linux: implement daemonize</title>
<updated>2026-02-15T06:59:16Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-02-14T16:09:03Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=389f9bf2b021104072377420c0c6c115542da652'/>
<id>urn:sha1:389f9bf2b021104072377420c0c6c115542da652</id>
<content type='text'>
Closes: #2
Link: https://github.com/dilluti0n/dpibreak/issues/2
</content>
</entry>
<entry>
<title>linux: refactor rules backend into iptables/nftables modules</title>
<updated>2026-01-22T15:18:43Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-01-20T05:23:56Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=7555c95ccd072335762cf2248edcfa83711c6437'/>
<id>urn:sha1:7555c95ccd072335762cf2248edcfa83711c6437</id>
<content type='text'>
Split iptables and nftables rule management into dedicated modules.
Keep linux.rs focused on shared helpers and rule dispatch.

(cherry picked from commit 60c0011ca0cf5a463056fca17f2f747e762e19f9)
</content>
</entry>
<entry>
<title>linux: drop iptables crate (regex dep) to reduce binary size</title>
<updated>2026-01-17T15:28:22Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-01-17T15:28:22Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=5658f5287dec0a6f300382b1de96c900e7edf174'/>
<id>urn:sha1:5658f5287dec0a6f300382b1de96c900e7edf174</id>
<content type='text'>
Introduce minimal iptables wrapper.
</content>
</entry>
<entry>
<title>Refactor main.rs; modulize opt.rs and pkt.rs</title>
<updated>2026-01-16T07:29:31Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-01-16T06:22:14Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=0dffd9a4df59b503eaaf26524f17f58831d01eec'/>
<id>urn:sha1:0dffd9a4df59b503eaaf26524f17f58831d01eec</id>
<content type='text'>
Move option parsing to opt.rs and packet handling to pkt.rs from
main.rs
</content>
</entry>
<entry>
<title>Normalize option handling and OPT_* naming</title>
<updated>2025-12-30T11:00:07Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-12-30T11:00:07Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=9e38b2c679ee5a3ab9acad9a0ab53aedeb492c26'/>
<id>urn:sha1:9e38b2c679ee5a3ab9acad9a0ab53aedeb492c26</id>
<content type='text'>
Log runtime options on startup
</content>
</entry>
<entry>
<title>Prevent infinite loop on packet injection/filtering</title>
<updated>2025-12-30T08:15:22Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-12-29T12:41:16Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=08d97bba88329315040bd4820ab4d799ee537181'/>
<id>urn:sha1:08d97bba88329315040bd4820ab4d799ee537181</id>
<content type='text'>
- linux: fix infinite NFQUEUE loop by marking injected packets
- windows: by marking packet to impostor
</content>
</entry>
<entry>
<title>linux: extract process execution into `exec_process` helper</title>
<updated>2025-12-29T09:07:58Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-12-29T08:59:47Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=7bfef8fafc5369f65bd6f12c83e89f3443b923c0'/>
<id>urn:sha1:7bfef8fafc5369f65bd6f12c83e89f3443b923c0</id>
<content type='text'>
Introduce exec_process() to handle external command execution, stdin
piping, and error reporting. Now cleanup() and apply_nft_rules() call
exec_process() to call modprobe, nft respectively.

This improves error handling for cleanup xt_u32.
</content>
</entry>
</feed>
