[RFC PATCH 0/7] Rust Socket abstractions

From: Michele Dalle Rive
Date: Mon Aug 14 2023 - 05:25:29 EST


This patch series is intended to create Rust abstractions for Sockets
and other fundamental network entities.

Specifically, it was added:
- Ip address and Socket address wrappers (for `in_addr`, `in6_addr`,
`sockaddr_in`, `sockaddr_in6`, `sockaddr_storage`).
- Socket wrapper.
- Socket flags and options enums.
- TCP and UDP specific abstractions over the Rust Socket structure.

This series is a RFC because I would appreciate some feedback about:
- The structure of the module: is the division of the files and modules
appropriate or should it be more or less fine-grained?
Also, should the `net` module export all the structures of its
submodules? I noticed that it is done in the standard library.
- Whether the documentation is comprehensive enough.
- A few other specific questions, written in the individual patches.

I would greatly appreciate any kind of feedback or opinion.
I am pretty new to the patch/mailing list world, so please point out any
mistake I might make.

The changes in this patch series are based on top of the latest commit
of `rust-next` in the Rust git tree:
19cd7b5d229c ("btf, scripts: rust: drop is_rust_module.sh")

Michele Dalle Rive (7):
rust: net: add net module files and shared enums.
rust: net: add ip and socket address bindings.
rust: net: add socket-related flags and flagset.
rust: net: add socket wrapper.
rust: net: implement socket options API.
rust: net: add socket TCP wrappers.
rust: net: add socket UDP wrappers.

rust/bindings/bindings_helper.h | 3 +
rust/kernel/lib.rs | 2 +
rust/kernel/net.rs | 185 +++++
rust/kernel/net/addr.rs | 1215 ++++++++++++++++++++++++++++++
rust/kernel/net/ip.rs | 73 ++
rust/kernel/net/socket.rs | 641 ++++++++++++++++
rust/kernel/net/socket/flags.rs | 467 ++++++++++++
rust/kernel/net/socket/opts.rs | 1222 +++++++++++++++++++++++++++++++
rust/kernel/net/tcp.rs | 252 +++++++
rust/kernel/net/udp.rs | 182 +++++
10 files changed, 4242 insertions(+)
create mode 100644 rust/kernel/net.rs
create mode 100644 rust/kernel/net/addr.rs
create mode 100644 rust/kernel/net/ip.rs
create mode 100644 rust/kernel/net/socket.rs
create mode 100644 rust/kernel/net/socket/flags.rs
create mode 100644 rust/kernel/net/socket/opts.rs
create mode 100644 rust/kernel/net/tcp.rs
create mode 100644 rust/kernel/net/udp.rs

--
2.41.0