Netstack3 是在 Rust 中从头开始开发的网络堆栈。时间是
正处于积极开发阶段,我们鼓励每个人贡献自己的力量!大部分
Netstack3 大约有 90% 的代码行,与平台无关,这意味着你可以
在开发机器上进行构建和测试,而无需构建
Fuchsia 或在虚拟机中运行它。你可以直接使用常规cargo
开发工作流(cargo check
、cargo test
等)。
您可以在我们的首批有效漏洞列表中找到一些开始使用的漏洞 列表,以及优质 第二个 bug 列表。
本文档旨在帮助您了解在 Google Cloud 中 Netstack3。它能帮助您从零开始构建、测试和 Netstack3 的平台无关核心。
如果您有兴趣贡献内容,并希望与 Netstack3 聊聊, 开发者,欢迎随时与我们联系!我们在 connectivity-dev@fuchsia.dev 邮寄名单中。
准备工作
- 获取源代码
- 配置和构建 Fuchsia
<ph type="x-smartling-placeholder">
- </ph>
- 您的
fx set
命令需要通过 Cargo 启用 Netstack3 开发 添加--with //src/connectivity/network/netstack3:bin --cargo-toml-gen
标志。假设您在 x86 机器上进行开发,请使用fx set core.x64 --with //src/connectivity/network/netstack3:bin --cargo-toml-gen
。
- 您的
- Netstack3 的平台无关核心的源代码位于
src/connectivity/network/netstack3/core
。 - 通过运行
fx build src/connectivity/network/netstack3/core:netstack3-core
构建 Netstack3 核心。 - 生成
Cargo.toml
文件,以便使用cargo
进行开发,方法是依次运行fx build build/rust:cargo_toml_gen
和fx gen-cargo //src/connectivity/network/netstack3/core:netstack3-core
。 将以下代码行添加到
~/.cargo/config.toml
文件中,以替换 您的 Fuchsia 目录的绝对路径, 目标开发平台与x86_64-unknown-linux-gnu
不同:[target.x86_64-unknown-linux-gnu] rustflags = ["-L", "absolute_path_to_fuchsia_directory/out/default/host_x64/obj/third_party/boringssl"]
如果您没有配置文件,可以创建一个只包含这些内容的配置文件。 如果您不确定自己的目标开发平台是什么,请运行
rustup show
。这些 配置行指示cargo
在何处查找 BoringSSL 的构建工件, 我们会将其用于某些加密操作运行以下命令,将
rustup
配置为使用 Fuchsia Rust 工具链:rustup toolchain link fuchsia $($FUCHSIA_DIR/scripts/youcompleteme/paths.py VSCODE_RUST_TOOLCHAIN) rustup default fuchsia
运行
cargo
命令(如cargo check
或cargo test
)以查看其实际效果!
从现在起,您大部分时间都可以只使用 cargo
进行开发。
有时,对 Netstack3 依赖项的重大变更可能会导致您的构建设置
。如需有关以下方面的建议,请参阅问题排查部分
修复构建
问题排查
- 如果您在使用
jiri update
拉取最新更改后无法正确运行cargo
,请尝试以下操作: <ph type="x-smartling-placeholder">- </ph>
- 请移除
Cargo.lock
文件,运行cargo clean
,然后重试 - 如果
cargo
仍无法正常运行,请尝试使用完整的整洁 build: fx clean
- 这会清除构建输出,并让您做好准备 完整干净 build- 运行您一开始就运行的同一
fx set
命令(可能是fx set core.x64 --with //src/connectivity/network/netstack3:bin --cargo-toml-gen
)。 fx build src/connectivity/network/netstack3/core:netstack3-core
fx build build/rust:cargo_toml_gen
- 请移除
做出贡献的更改
有兴趣为 Netstack3 做贡献?我们期待您的加入!如果您没有 不知道从何处入手,不妨试一试我们优质的首个错误列表或我们的 正确的第二个错误列表。如果您仍然有点迷失, 欢迎随时发送电子邮件至 connectivity-dev@fuchsia.dev 与我们联系。
如果您对我们的 Issue Tracker 尚未跟踪的更改有任何建议, 太棒了!我们特别欢迎问题修复和文档改进。 请先与我们联系以确保我们达成共识 花时间做一些我们最终都不会接受的工作。
准备好贡献内容后,只需按照以下简单步骤操作即可:
- 阅读关于为 Fuchsia 贡献内容的一般说明
- 阅读我们的 Fuchsia 网络贡献者指南
理解
如果您想深入了解 Netstack3 的设计, 请参阅我们的文档。