[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230814092302.1903203-1-dallerivemichele@gmail.com>
Date: Mon, 14 Aug 2023 11:22:55 +0200
From: Michele Dalle Rive <dallerivemichele@...il.com>
To: Miguel Ojeda <ojeda@...nel.org>,
Alex Gaynor <alex.gaynor@...il.com>,
Wedson Almeida Filho <wedsonaf@...il.com>,
"David S. Miller" <davem@...emloft.net>
Cc: Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
Boqun Feng <boqun.feng@...il.com>, Gary Guo <gary@...yguo.net>,
Björn Roy Baron <bjorn3_gh@...tonmail.com>,
Benno Lossin <benno.lossin@...ton.me>,
Alice Ryhl <aliceryhl@...gle.com>,
Davide Rovelli <davide.rovelli@....ch>,
rust-for-linux@...r.kernel.org, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, patches@...ts.linux.dev,
Michele Dalle Rive <dallerivemichele@...il.com>
Subject: [RFC PATCH 0/7] Rust Socket abstractions
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
Powered by blists - more mailing lists