m/n/c/network: add quirks infra and i40e quirk

This adds the applyQuirks function which is called during early
initialization of the network stack, before any network interfaces are
enabled. This function applies device and/or driver-specific fixups to
make them work better. For that purpose it examines relevant metadata
(driver in use, firmware version and OpROM version) to decide which
quirks should be applied to which device.

As we do not yet have another way of exposing firmware versions, this
also takes care of logging all non-zero firmware versions.

It also adds a first quirk for i40e which disables firmware-based LLDP
procesing.

Change-Id: I456753880102dfb5b3e94847cf5627a003d70eeb
Reviewed-on: https://review.monogon.dev/c/monogon/+/2344
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
Tested-by: Jenkins CI
3 files changed
tree: 7f9f6c0207ef375f9865cc408a063fd63065eec1
  1. .github/
  2. build/
  3. cloud/
  4. go/
  5. intellij/
  6. metropolis/
  7. net/
  8. third_party/
  9. tools/
  10. .bazelignore
  11. .bazelproject
  12. .bazelrc
  13. .bazelrc.sandboxroot
  14. .bazelversion
  15. .git-ignore-revs
  16. .gitignore
  17. BUILD.bazel
  18. CODING_STANDARDS.md
  19. go.mod
  20. go.sum
  21. LICENSE
  22. README.md
  23. SETUP.md
  24. shell.nix
  25. WORKSPACE
README.md

Monogon Monorepo

This is the main repository containing the source code for the Monogon Platform.

This is pre-release software - take a look, and check back later!

Environment

Our build environment is self-contained and requires only minimal host dependencies:

  • A Linux machine or VM.
  • Bazelisk >= v1.15.0 (or a working Nix environment).
  • A reasonably recent kernel with user namespaces enabled.
  • Working KVM with access to /dev/kvm (if you want to run tests).

Our docs assume that Bazelisk is available as bazel on your PATH.

Refer to SETUP.md for detailed instructions.

Monogon OS

Run a single node demo cluster

Build CLI and node image:

bazel build //metropolis/cli/dbg //:launch --config dbg

Launch an ephemeral test node:

bazel test //:launch --config dbg --test_output=streamed

Run a kubectl command while the test is running:

bazel-bin/metropolis/cli/dbg/dbg_/dbg kubectl describe node

Test suite

Run full test suite:

bazel test --config dbg //...