Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

net/linux_kernel: add unnamed Unix-domain addresses #1240

Closed
wants to merge 1 commit into from

Conversation

Kijewski
Copy link
Contributor

I think it would be useful to have unnamed Unix-domain addressed in rustix. This PR adds the methods SocketAddrUnix::new_unnamed() and SocketAddrUnix::is_unnamed().

In C it is possible to have an unnamed Unix-domain socket name, when you set len = 2 = sizeof(c::socklen_t). Then the kernel will choose an abstract Unix-domain name for you when you bind the socket. The same feature present also in Python, when you call sock.bind("").

Invoking SocketAddrUnix::new_abstract_name(b"") gives you an empty abstract socket address, i.e. SocketAddrUnix::len == 3. The kernel will keep this empty abstract name on calling bind().

I think it would be useful to have unnamed Unix-domain addressed in
rustix. This PR adds the methods `SocketAddrUnix::new_unnamed()` and
`SocketAddrUnix::is_unnamed()`.

In C it is possible to have an [unnamed Unix-domain] socket name, when
you set `len` = 2 = `sizeof(c::socklen_t)`. Then the kernel will choose
an abstract Unix-domain name for you when you bind the socket. The same
feature present also in Python, when you call [`sock.bind("")`].

Invoking [`SocketAddrUnix::new_abstract_name(b"")`] gives you an empty
abstract socket address, i.e. `SocketAddrUnix::len == 3`. The kernel
will keep this empty abstract name on calling `bind()`.

[unnamed Unix-domain]: https://manpages.debian.org/bookworm/manpages/unix.7.en.html#unnamed
[`sock.bind("")`]: https://docs.python.org/3.13/library/socket.html#socket.socket.bind
[`SocketAddrUnix::new_abstract_name(b"")`]: https://docs.rs/rustix/0.38.42/rustix/net/struct.SocketAddrUnix.html#method.new_abstract_name
@Kijewski
Copy link
Contributor Author

Kijewski commented Dec 16, 2024

Accidentally based on a non-HEAD branch. Replaced by #1242.

@Kijewski Kijewski closed this Dec 16, 2024
@Kijewski Kijewski deleted the 0.38 branch December 16, 2024 19:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant