Skip to content

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

Closed
Kijewski wants to merge 1 commit intobytecodealliance:0.38from
Kijewski:0.38
Closed

net/linux_kernel: add unnamed Unix-domain addresses#1240
Kijewski wants to merge 1 commit intobytecodealliance:0.38from
Kijewski:0.38

Conversation

@Kijewski
Copy link
Copy Markdown
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
Copy Markdown
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