<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dpibreak.git/src/platform/linux/libc_s.rs, branch v0.6.2</title>
<subtitle>System-wide DPI circumvention with minimal configuration
</subtitle>
<id>http://git.dilluti0n.com/dpibreak.git/atom?h=v0.6.2</id>
<link rel='self' href='http://git.dilluti0n.com/dpibreak.git/atom?h=v0.6.2'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/'/>
<updated>2026-07-06T15:12:23Z</updated>
<entry>
<title>linux: implement socket and mmap wrapper for rxring</title>
<updated>2026-07-06T15:12:23Z</updated>
<author>
<name>dilluti0n</name>
<email>hskim@dilluti0n.com</email>
</author>
<published>2026-07-06T14:34:20Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=2a024e886547bdcddd9633d77baa0d25c5d3bb07'/>
<id>urn:sha1:2a024e886547bdcddd9633d77baa0d25c5d3bb07</id>
<content type='text'>
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).
</content>
</entry>
<entry>
<title>linux: libc_s: add syscall! macro to reduce redundant error handling</title>
<updated>2026-07-06T13:17:13Z</updated>
<author>
<name>dilluti0n</name>
<email>hskim@dilluti0n.com</email>
</author>
<published>2026-07-06T13:17:13Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=64103ce7f5f4e75a1584d489f1e61885b7c34a03'/>
<id>urn:sha1:64103ce7f5f4e75a1584d489f1e61885b7c34a03</id>
<content type='text'>
</content>
</entry>
<entry>
<title>linux: add PACKET_RX_RING to libc_s::setsockopt apstraction</title>
<updated>2026-07-06T13:05:28Z</updated>
<author>
<name>dilluti0n</name>
<email>hskim@dilluti0n.com</email>
</author>
<published>2026-07-06T13:05:28Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=e9db8ad3caf4c28f301ef7c6be72f9617cc490b5'/>
<id>urn:sha1:e9db8ad3caf4c28f301ef7c6be72f9617cc490b5</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>linux: add safe abstraction for setsockopt(SO_ATTACH_FILTER)</title>
<updated>2026-07-06T11:11:59Z</updated>
<author>
<name>dilluti0n</name>
<email>hskim@dilluti0n.com</email>
</author>
<published>2026-07-06T11:07:33Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=ca1737e17103d767691786b5bbf6de491dcc75a3'/>
<id>urn:sha1:ca1737e17103d767691786b5bbf6de491dcc75a3</id>
<content type='text'>
Treating optval as just a &amp;[u8] in setsockopt() is not appropriate for
usage patterns where a struct is put into optval. Rust treats casting
a struct to &amp;[u8] as unsafe.
</content>
</entry>
<entry>
<title>linux: move poll_s() to mod libc_s</title>
<updated>2026-07-06T09:32:02Z</updated>
<author>
<name>dilluti0n</name>
<email>hskim@dilluti0n.com</email>
</author>
<published>2026-07-06T09:31:45Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=0a5fbabb55444843692284d22469f40731cafdea'/>
<id>urn:sha1:0a5fbabb55444843692284d22469f40731cafdea</id>
<content type='text'>
</content>
</entry>
<entry>
<title>linux: drop nix, add wrapper libc_s instead</title>
<updated>2026-07-06T09:05:59Z</updated>
<author>
<name>dilluti0n</name>
<email>hskim@dilluti0n.com</email>
</author>
<published>2026-07-06T09:05:59Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=4b65693ebacb7ad12279c31ea469b1cd06b4ceb4'/>
<id>urn:sha1:4b65693ebacb7ad12279c31ea469b1cd06b4ceb4</id>
<content type='text'>
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.
</content>
</entry>
</feed>
