为 Netstack3 贡献代码

Netstack3 是在 Rust 中从头开始开发的网络堆栈。时间是 正处于积极开发阶段,我们鼓励每个人贡献自己的力量!大部分 Netstack3 大约有 90% 的代码行,与平台无关,这意味着你可以 在开发机器上进行构建和测试,而无需构建 Fuchsia 或在虚拟机中运行它。你可以直接使用常规cargo 开发工作流(cargo checkcargo 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_genfx 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 checkcargo 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 尚未跟踪的更改有任何建议, 太棒了!我们特别欢迎问题修复和文档改进。 请先与我们联系以确保我们达成共识 花时间做一些我们最终都不会接受的工作。

准备好贡献内容后,只需按照以下简单步骤操作即可:

理解

如果您想深入了解 Netstack3 的设计, 请参阅我们的文档